From 54a33a391e211a4b2b97621501c6236527d32331 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 01 八月 2024 10:41:00 +0800
Subject: [PATCH] 文件采集公式计算调整

---
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java              |    5 +++++
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java                          |   42 ++++++++++++++++++------------------------
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java |    4 +++-
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java            |    6 +-----
 4 files changed, 27 insertions(+), 30 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 ab8db5b..4dab601 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
@@ -261,15 +261,13 @@
             formula = formula.replace("锛�", "(")
                     .replace("锛�", ")")
                     .replace("锛�", ",");
-            //鐒跺悗鎻愬彇鑻辨枃瀛楁瘝,鍏ㄩ儴杞崲涓哄ぇ鍐�
-            String[] strs = formula.split("[^A-Za-z]+");
-            String upperStr = "";
-            for (String str : strs) {
-                upperStr += str.toUpperCase();
-            }
+            //鐒跺悗鎻愬彇鍏紡
+            String strs = formula.substring(0,formula.indexOf("("));
+            String upperStr = strs.toUpperCase();
             if (upperStr.equals("")) {
                 throw new ErrorException(formula + "閲岄潰鐨勫叕寮忔病鏈夊嚱鏁�");
             }
+            System.out.println(upperStr);
             //鐒跺悗鑾峰彇鏈�澶栭潰鎷彿閲岄潰鐨勫��,鍐嶆牴鎹�","鍒嗗壊
             int start = formula.indexOf("(");
             int end = -1;
@@ -289,51 +287,47 @@
                 throw new ErrorException("鍏紡鎷彿涓嶅尮閰�: " + formula);
             }
 
-            String inner = formula.substring(start + 1, end);
+            String argumentsStr = formula.substring(start + 1, end);
             List<String> arguments = new ArrayList<>();
-            int depth = 0;
+            int bracketCount = 0;
             StringBuilder currentArgument = new StringBuilder();
-            for (
-                    char c : inner.toCharArray()) {
-                if (c == ',' && depth == 0) {
+            for (char c : argumentsStr.toCharArray()) {
+                if (c == ',' && bracketCount == 0) {
                     arguments.add(currentArgument.toString());
                     currentArgument.setLength(0);
                 } else {
-                    if (c == '(') {
-                        depth++;
-                    } else if (c == ')') {
-                        depth--;
-                    }
+                    if (c == '(') bracketCount++;
+                    if (c == ')') bracketCount--;
                     currentArgument.append(c);
                 }
             }
             arguments.add(currentArgument.toString());
             String[] bracketStrs = arguments.toArray(new String[0]);
-
             List<BigDecimal> results = new ArrayList<>();
-            for (
-                    String expr : bracketStrs) {
+            for (String expr : bracketStrs) {
                 System.out.println("鏇挎崲鍓�" + expr);
-                Pattern pattern = Pattern.compile("\\b\\d+\\b");
+                Pattern pattern = Pattern.compile("([A-Z])(\\d+)");
                 Matcher matcher = pattern.matcher(expr);
                 StringBuffer sb = new StringBuffer();
                 while (matcher.find()) {
-                    int index = Integer.parseInt(matcher.group()) - 1;
+                    String letter = matcher.group(1);
+                    int index = Integer.parseInt(matcher.group(2)) - 1; // 灏�1-based杞负0-based
                     if (index < bigDecimalList.size()) {
                         matcher.appendReplacement(sb, bigDecimalList.get(index).toString());
                     } else {
-                        throw new ErrorException("琛ㄨ揪寮忎腑鐨勪笅鏍� " + index + " 瓒呭嚭鑼冨洿");
+                        throw new RuntimeException("鍏紡涓殑涓嬫爣 " + index + " 瓒呭嚭鑼冨洿");
                     }
                 }
                 matcher.appendTail(sb);
                 System.out.println("鏇挎崲鍚�" + sb.toString());
-                //璁$畻
+
+                // 璁$畻琛ㄨ揪寮�
                 ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
                 try {
                     Object result = engine.eval(sb.toString());
                     results.add(new BigDecimal(result.toString()));
                 } catch (Exception e) {
-                    throw new IllegalArgumentException("鏃犳硶璁$畻琛ㄨ揪寮�: " + sb, e);
+                    throw new IllegalArgumentException("鏃犳硶璁$畻鍏紡: " + sb, e);
                 }
             }
             // 鏍规嵁鍑芥暟鍚嶇О杩涜鐩稿簲璁$畻
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
index d95eb28..8e450da 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
@@ -68,30 +68,35 @@
             throw new ErrorException("鏂囦欢涓婁紶澶辫触");
         }
     }
+
     @ValueClassify("鎶ュ憡缂栧埗")
     @ApiOperation(value = "鎶ュ憡杩樺師")
     @PostMapping("/upReportUrl")
     public Result upReportUrl(Integer id) {
         return Result.success(insReportService.upReportUrl(id));
     }
+
     @ValueClassify("鎶ュ憡缂栧埗")
     @ApiOperation(value = "鎶ュ憡鍦ㄧ嚎缂栧埗")
     @GetMapping("/upReportFile")
     public Result upReportFile() {
         return Result.success();
     }
+
     @ValueClassify("鎶ュ憡缂栧埗")
     @ApiOperation(value = "鎻愪氦")
     @PostMapping("/writeReport")
     public Result writeReport(Integer id) {
         return Result.success(insReportService.writeReport(id));
     }
+
     @ValueClassify("鎶ュ憡缂栧埗")
     @ApiOperation(value = "瀹℃牳")
     @PostMapping("/examineReport")
     public Result examineReport(Integer id, Integer isExamine, String examineTell) {
         return Result.success(insReportService.examineReport(id, isExamine, examineTell));
     }
+
     @ValueClassify("鎶ュ憡缂栧埗")
     @ApiOperation(value = "鎵瑰噯")
     @PostMapping("/ratifyReport")
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
index 63e5676..2876dd4 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -635,17 +635,13 @@
                         .collect(Collectors.groupingBy(CostStatisticsDto::getCompany));
         try {
             // 鏂板缓ExcelWriter
-            ExcelWriter excelWriter =
-                    EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
-
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
             for (Map.Entry<String, List<CostStatisticsDto>> companyDataEntry : groupByCompany.entrySet()) {
                 String sheetName = companyDataEntry.getKey();
                 List<CostStatisticsDto> dataList = companyDataEntry.getValue();
                 WriteSheet mainSheet = EasyExcel.writerSheet(sheetName).head(CostStatisticsDto.class).build();
                 excelWriter.write(dataList, mainSheet);
             }
-
-
             // 鍏抽棴娴�
             excelWriter.finish();
         } catch (IOException e) {
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java
index 348afe6..4169a84 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java
@@ -75,7 +75,9 @@
             }
         }
         String[] split1 = insSample.getFactory().split(" - ");
-        list = list.stream().filter(list1 -> list1.getSample().equals(split1[3])).collect(Collectors.toList());
+        if (ObjectUtils.isNotEmpty(split1[3])){
+            list = list.stream().filter(list1 -> list1.getSample().equals(split1[3])).collect(Collectors.toList());
+        }
         list = list.stream().filter(a -> {
             try {
                 if (a.getSection() != null && !Objects.equals(a.getSection(), "")) {

--
Gitblit v1.9.3