cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
@@ -264,8 +264,8 @@
            //然后提取公式
            String strs = formula.substring(0,formula.indexOf("("));
            String upperStr = strs.toUpperCase();
            if (upperStr.equals("")) {
                throw new ErrorException(formula + "里面的公式没有函数");
            if (upperStr.matches(".*\\d.*")){
                upperStr="";
            }
            System.out.println(upperStr);
            //然后获取最外面括号里面的值,再根据","分割
@@ -332,36 +332,40 @@
            }
            // 根据函数名称进行相应计算
            BigDecimal finalResult;
            switch (upperStr) {
                case "MAX":
                    finalResult = results.stream().max(BigDecimal::compareTo)
                            .orElseThrow(() -> new IllegalArgumentException("无法计算MAX值"));
                    break;
                case "MIN":
                    finalResult = results.stream().min(BigDecimal::compareTo)
                            .orElseThrow(() -> new IllegalArgumentException("无法计算MIN值"));
                    break;
                case "SUM":
                    finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
                    break;
                case "ABS":
                    finalResult = results.stream().map(BigDecimal::abs).reduce(BigDecimal.ZERO, BigDecimal::add);
                    break;
                case "AVERAGE":
                    finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::divide)
                            .divide(BigDecimal.valueOf(results.size()), 2, BigDecimal.ROUND_HALF_UP);
                    break;
                case "MEDIAN":
                    int size = results.size();
                    if (size % 2 == 1) {
                        finalResult = results.get(size / 2);
                    } else {
                        BigDecimal sum = results.get(size / 2 - 1).add(results.get(size / 2));
                        finalResult = sum.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
                    }
                    break;
                default:
                    throw new UnsupportedOperationException("暂不支持函数: " + upperStr);
            if (upperStr.equals("")||upperStr==null) {
                finalResult=results.get(0);
            }else {
                switch (upperStr) {
                    case "MAX":
                        finalResult = results.stream().max(BigDecimal::compareTo)
                                .orElseThrow(() -> new IllegalArgumentException("无法计算MAX值"));
                        break;
                    case "MIN":
                        finalResult = results.stream().min(BigDecimal::compareTo)
                                .orElseThrow(() -> new IllegalArgumentException("无法计算MIN值"));
                        break;
                    case "SUM":
                        finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
                        break;
                    case "ABS":
                        finalResult = results.stream().map(BigDecimal::abs).reduce(BigDecimal.ZERO, BigDecimal::add);
                        break;
                    case "AVERAGE":
                        finalResult = results.stream().reduce(BigDecimal.ZERO, BigDecimal::divide)
                                .divide(BigDecimal.valueOf(results.size()), 2, BigDecimal.ROUND_HALF_UP);
                        break;
                    case "MEDIAN":
                        int size = results.size();
                        if (size % 2 == 1) {
                            finalResult = results.get(size / 2);
                        } else {
                            BigDecimal sum = results.get(size / 2 - 1).add(results.get(size / 2));
                            finalResult = sum.divide(BigDecimal.valueOf(2), 2, BigDecimal.ROUND_HALF_UP);
                        }
                        break;
                    default:
                        throw new UnsupportedOperationException("暂不支持函数: " + upperStr);
                }
            }
            System.out.println(results);
            System.out.println("计算结果: " + finalResult);