From d68c61517a3a6d4ec4d47844c21bdc143f99cbab Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 17 四月 2024 22:58:05 +0800 Subject: [PATCH] 大屏接口 --- ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java | 44 +++++++++++++++++++++++++++----------------- 1 files changed, 27 insertions(+), 17 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java index 2a4b5e4..e5bd60d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java @@ -1,15 +1,14 @@ package com.ruoyi.system.dto; import com.ruoyi.common.enums.CalculateTypeEnum; +import com.ruoyi.common.utils.CalculateUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - +import java.util.List; +import java.util.Map; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import lombok.Data; /** * @author mitao @@ -25,7 +24,7 @@ @ApiModelProperty(value = "基础数据分类id") @NotNull(message = "基础数据分类id不能为空") - private Integer basicDataCategoryId; + private Long basicDataCategoryId; @ApiModelProperty(value = "字段说明") @NotBlank(message = "字段说明不能为空") @@ -35,24 +34,27 @@ @NotNull(message = "计算类型不能为空") private CalculateTypeEnum calculateType; - @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)") - @NotBlank(message = "字段id不能为空") + @ApiModelProperty(value = "字段id ", notes = "文本统计 和百分比统计的的字段id") private String fieldIdStr; - @ApiModelProperty(value = "计算公式",notes = "计算类型为数字计算,配置内容使用该字段接收;公式中字段的格式为:field_字段id,e.g:field_1,field_2等。") - private String numberCalculateFormula; + @ApiModelProperty(value = "最大分值") + private Double maxScore; - @ApiModelProperty(value = "文本和百分比配置信息",notes = "当计算方式为 文本统计/百分比统计 " + + @ApiModelProperty(value = "计算公式") + private List<CalculateItemDTO> calculateItemList; + + @ApiModelProperty(value = "文本和百分比配置信息", notes = "当计算方式为 文本统计/百分比统计 " + "配置内容使用这个字段接收;key为键,value为得分;百分比统计 将百分比区间使用'_'拼接作为key,e.g: 10_20,20_30") private List<CalculateDTO> dtoList; public static void main(String[] args) { - String rule = "(field1_13+field2_50) × 5 ÷field3_63×10"; + /* String rule = "(field1_13+field2_50) × 5 ÷ field3_63×10"; // 正则表达式模式,匹配形如 "fieldName:value" 的字符串 Pattern pattern = Pattern.compile("\\b(\\w+)_(\\d+)\\b"); Matcher matcher = pattern.matcher(rule); + Map<String, Integer> map = new HashMap<>(); // 循环匹配并输出字段名和值 while (matcher.find()) { String fieldName = matcher.group(1); @@ -60,10 +62,10 @@ System.out.println("Field: " + fieldName + ", Value: " + value); } - /* // 假设用户上传的字段值 - int field1 = 500; - int field2 = 30; - int field3 = 1000; + // 假设用户上传的字段值 + int field1_13 = 500; + int field2_50 = 30; + int field3_63 = 1000; // 计算表达式 String expression = "(field1_13 + field2_50) * 5 / field3_63 * 10"; @@ -85,5 +87,13 @@ // 输出结果 System.out.println("Result: " + result);*/ + + String expression = "(field_13 + field_50) × 5 ÷ field_63 × 10-1"; + expression = CalculateUtil.formatExpression(expression); + System.err.println(expression); + Map<String, Integer> fieldsAndValue = CalculateUtil.getFieldsAndValue(expression); + System.out.println(fieldsAndValue); + /* double calculate = CalculateUtil.calculate(expression, fieldsAndValue); + System.out.println(calculate);*/ } - } +} -- Gitblit v1.7.1