mitao
2024-03-27 789b5b823440d174a198a35fd033ca975cb54f4a
ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java
@@ -1,6 +1,7 @@
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;
@@ -8,8 +9,7 @@
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 java.util.Map;
/**
 * @author mitao
@@ -35,7 +35,7 @@
    @NotNull(message = "计算类型不能为空")
    private CalculateTypeEnum calculateType;
    @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)")
    @ApiModelProperty(value = "字段id ",notes = "多个id使用 ',' 拼接")
    @NotBlank(message = "字段id不能为空")
    private String fieldIdStr;
@@ -47,12 +47,13 @@
    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 +61,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 +86,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);*/
    }
 }