From 1ebf951a1d9676647957e7a319ae281b4a52dd1f Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期五, 02 八月 2024 18:45:40 +0800
Subject: [PATCH] 数采公式优化+任务切换sql语法错误+检验下单页面展示的数量和里面的数量不一致

---
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java |   68 ++++++++++++++++++----------------
 1 files changed, 36 insertions(+), 32 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java b/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
index 4dab601..eddd73d 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java
+++ b/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);

--
Gitblit v1.9.3