From 12ecef99059f411e802c6fbc6f9a641c422b1747 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期六, 03 八月 2024 22:34:20 +0800
Subject: [PATCH] 数采bug修复

---
 cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java          |  195 +----------------------
 cnas-server/src/main/java/com/yuanchu/mom/utils/DataAcquisition.java                   |  179 ++++++++++++++++++++--
 inspect-server/src/main/resources/mapper/InsOrderMapper.xml                            |   18 --
 cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java             |   10 -
 cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java                   |    2 
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |   29 ---
 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java                |    5 
 7 files changed, 174 insertions(+), 264 deletions(-)

diff --git a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
index 9c5cfce..2725613 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/controller/DeviceController.java
@@ -224,12 +224,4 @@
     public Result<?> temDataAcquisition2(@RequestBody PkMaster pkMaster) {
         return Result.success(pkMasterService.temDataAcquisition2(pkMaster));
     }
-
-    @ApiOperation(value = "鏁伴噰-鍏紡璁$畻")
-    @PostMapping("/formulaCalculation")
-    @ValueAuth
-    public Result<?> formulaCalculation(@RequestBody Map<String, Object> map) {
-        return Result.success(map);
-    }
-}
-
+}
\ No newline at end of file
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
index 313d8ad..09478a9 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/DeviceService.java
@@ -43,6 +43,4 @@
     List<Map<String, Object>> treeDevice(String deviceName);
 
     Result<?> determineWhetherToCollectData(String managementNumber, HttpServletRequest request);
-
-    Object formulaCalculation(Map<String, Object> map, Boolean isAdopt);
 }
diff --git a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
index 8be96b1..a4714a7 100644
--- a/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
+++ b/cnas-server/src/main/java/com/yuanchu/mom/service/impl/DeviceServiceImpl.java
@@ -1,8 +1,6 @@
 package com.yuanchu.mom.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -31,13 +29,11 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
 import javax.servlet.http.HttpServletRequest;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -176,18 +172,18 @@
                 .orderBy(false, false, DataConfig::getId));
             list1.addAll(list);
         });
-        // 3銆侀噰闆嗭紝鍙栨暟鎹紝鍙備笌鍏紡璁$畻
+        // 3銆侀噰闆嗭紝鍙栨暟鎹�
         Map<String, Object> map = DataAcquisition.dataAcquisitionEntrance(list1, device.get(0), entrustCode, sampleCode, ip);
-        // 4銆侀�犲惊鐜鏁�
+        // 4銆侀�犲惊鐜鏁帮紝鍙備笌鍏紡璁$畻
         if (ObjectUtils.isNotEmpty(map)) {
             Object result;
             Map<String, Object> frequency = DataAcquisition.createFrequency(entrustCode, sampleCode, map);
-            if (ObjectUtils.isEmpty(device.get(0).getEntrustCode()) && ObjectUtils.isEmpty(device.get(0).getSampleCode())) {
-                result = formulaCalculation(frequency, true);
-            } else {
-                result = formulaCalculation(frequency, false);
-            }
-            return Result.success(result);
+//            if (ObjectUtils.isEmpty(device.get(0).getEntrustCode()) && ObjectUtils.isEmpty(device.get(0).getSampleCode())) {
+//                result = formulaCalculation(frequency, true);
+//            } else {
+//                result = formulaCalculation(frequency, false);
+//            }
+            return Result.success(frequency);
         } else {
             return Result.success(null);
         }
@@ -994,172 +990,5 @@
         } else {
             return Result.success(true);
         }
-    }
-
-    @Override
-    public Object formulaCalculation(Map<String, Object> map, Boolean isAdopt) {
-        map.forEach((key, value) -> {
-            Map<String, Object> jsonObject = JSONObject.parseObject(JSON.toJSONString(map.get(key)), Map.class);
-            for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
-                String sonKey = entry.getKey();
-                Object sonValue = entry.getValue();
-                if (!sonKey.equals("frequency")) {
-                    Map<String, Object> formulaData = JSONObject.parseObject(JSON.toJSONString(sonValue), Map.class);
-                    if (formulaData.containsKey("result") && formulaData.containsKey("isCalculation") &&
-                    formulaData.containsKey("formula")) {
-                        String formula = formulaData.get("formula").toString();
-                            List<Object> resultList = new ArrayList<>();
-                            try {
-                                resultList = JSONObject.parseArray(JSON.toJSONString(formulaData.get("result")), Object.class);
-                            } catch (Exception e) {
-                                Object result = formulaData.get("result").toString();
-                                resultList.add(result);
-                            }
-                            ArrayList<Object> list = new ArrayList<>();
-                            if (isAdopt) {
-                                String result = calculationFormula(resultList, formula);
-                                list.add(result);
-                            } else {
-                                resultList.forEach(i -> {
-                                    List<Object> strings = Arrays.asList(i.toString().split(","));
-                                    String result = calculationFormula(strings, formula);
-                                    list.add(result);
-                                });
-                            }
-
-                            formulaData.put("isCalculation", false);
-                            formulaData.put("result", list);
-                    }
-                    jsonObject.put(sonKey, formulaData);
-                }
-            }
-            map.put(key, jsonObject);
-        });
-        return map;
-    }
-
-    public String calculationFormula(List<Object> list, String formula) {
-            //棣栧厛灏唋ist杞崲涓篵igdecmic
-            List<BigDecimal> bigDecimalList = list.stream()
-                    .map(obj -> {
-                        return new BigDecimal((obj).toString());
-                    }).collect(Collectors.toList());
-            System.out.println(bigDecimalList);
-
-            //灏嗕腑鏂囩殑(杞崲鑻辨枃鐨�())
-            formula = formula.replace("锛�", "(")
-                    .replace("锛�", ")")
-                    .replace("锛�", ",");
-            //鐒跺悗鎻愬彇鍏紡
-            String strs = formula.substring(0, formula.indexOf("("));
-            String upperStr = strs.toUpperCase();
-            if (upperStr.matches(".*\\d.*")) {
-                upperStr = "";
-            }
-            System.out.println(upperStr);
-            //鐒跺悗鑾峰彇鏈�澶栭潰鎷彿閲岄潰鐨勫��,鍐嶆牴鎹�","鍒嗗壊
-            int start = formula.indexOf("(");
-            int end = -1;
-            int a = 0;
-            for (int i = start; i < formula.length(); i++) {
-                char c = formula.charAt(i);
-                if (c == '(') {
-                    a++;
-                } else if (c == ')') {
-                    a--;
-                    if (a == 0) {
-                        end = i;
-                    }
-                }
-            }
-            if (start == -1 || end == -1) {
-                throw new ErrorException("鍏紡鎷彿涓嶅尮閰�: " + formula);
-            }
-
-            String argumentsStr = formula.substring(start + 1, end);
-            List<String> arguments = new ArrayList<>();
-            int bracketCount = 0;
-            StringBuilder currentArgument = new StringBuilder();
-            for (char c : argumentsStr.toCharArray()) {
-                if (c == ',' && bracketCount == 0) {
-                    arguments.add(currentArgument.toString());
-                    currentArgument.setLength(0);
-                } else {
-                    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) {
-                System.out.println("鏇挎崲鍓�" + expr);
-                Pattern pattern = Pattern.compile("([A-Z])(\\d+)");
-                Matcher matcher = pattern.matcher(expr);
-                StringBuffer sb = new StringBuffer();
-                while (matcher.find()) {
-                    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 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);
-                }
-            }
-            // 鏍规嵁鍑芥暟鍚嶇О杩涜鐩稿簲璁$畻
-            BigDecimal finalResult;
-            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);
-
-            return finalResult.toString();
-            // 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
     }
 }
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 4f341f4..b143832 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
@@ -10,7 +10,10 @@
 import com.yuanchu.mom.pojo.DataConfig;
 import com.yuanchu.mom.pojo.Device;
 
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Matcher;
@@ -61,7 +64,11 @@
         }
         JSONObject jsonObject = JSON.parseObject(result);
         if (Objects.equals(jsonObject.get("code"), 1)) {
-            throw new ErrorException(jsonObject.get("msg") + "");
+            if (ObjectUtils.isEmpty(jsonObject.get("msg"))) {
+                throw new ErrorException("鏈煡璇㈠埌鏂囦欢锛佸彲鑳借璺緞锛�" + device.getCollectUrl() + "锛変笅骞舵病鏈夋墍闇�(" + device.getFileType() +")鏂囦欢锛�");
+            } else {
+                throw new ErrorException(jsonObject.get("msg") + "");
+            }
         } else {
             String data = jsonObject.get("data") + "";
             // 鑰冭檻鍒颁竴涓娴嬮」鍙兘浼氬瓨鍦ㄥ涓暟閲囬厤缃紝鎵�浠ラ渶瑕佽繘琛屽垎缁�
@@ -85,10 +92,10 @@
                     map = analysisList(data, userMap, device, entrustCode, sampleCode);
                     break;
                 case ".mdb":
-                    map = analysisMdb(data, userMap);
+                    map = analysisMdb(data, userMap, device);
                     break;
                 case ".db":
-                    map = analysisDb(data, userMap);
+                    map = analysisDb(data, userMap, device);
                     break;
                 case ".png":
                     map = readPngString(data, userMap, device);
@@ -158,7 +165,7 @@
      * @param dataConfig
      * @return
      */
-    private static Map<String, Object> analysisDb(String data, Map<String, List<DataConfig>> dataConfig) {
+    private static Map<String, Object> analysisDb(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
         JSONObject jsonObject = JSON.parseObject(data);
         Map<String, Object> map = new HashMap<>();
         if (jsonObject.isEmpty()) {
@@ -205,7 +212,7 @@
                 result.add(substring);
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(result, v.get(0), k);
+            Object resultValue = calculationFormula(result, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -216,7 +223,7 @@
      * @param dataConfig
      * @return
      */
-    private static Map<String, Object> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig) {
+    private static Map<String, Object> analysisMdb(String data, Map<String, List<DataConfig>> dataConfig, Device device) {
         JSONObject jsonObject = JSON.parseObject(data);
         Map<String, Object> map = new HashMap<>();
         if (jsonObject.isEmpty()) {
@@ -255,7 +262,7 @@
                 result.add(substring);
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(result, v.get(0), k);
+            Object resultValue = calculationFormula(result, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -300,7 +307,7 @@
                 }
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(list, v.get(0), k);
+            Object resultValue = calculationFormula(list, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -313,25 +320,36 @@
      * @param dataConfig 瀛樺偍鍏紡鐨勫璞�
      * @return
      */
-    private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem) {
+    private static Object calculationFormula(List<Object> list, DataConfig dataConfig, String insProductItem, Device device) {
         if (list.size() == 0) {
             return null;
         }
+        ArrayList<Object> listResult = new ArrayList<>();
         Map<String, Object> hashMap = new HashMap<>();
         // 濡傛灉涓嶄负绌猴紝杩涜鍏紡璁$畻
         if (ObjectUtils.isNotEmpty(dataConfig.getFormula())) {
-            hashMap.put("isCalculation", true);
-            hashMap.put("formula", dataConfig.getFormula());
             // 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
+            if (ObjectUtils.isEmpty(device.getEntrustCode()) && ObjectUtils.isEmpty(device.getSampleCode())) {
+                String s = calculationFormulaList(list, dataConfig.getFormula());
+                listResult.add(s);
+            } else {
+                list.forEach(i -> {
+                    List<Object> strings = Arrays.asList(i.toString().split(","));
+                    String s = calculationFormulaList(strings, dataConfig.getFormula());
+                    listResult.add(s);
+                });
+            }
         } else {
-            hashMap.put("isCalculation", false);
+            listResult.addAll(list);
         }
         // 涓轰簡缁欏墠绔仛鏁版嵁鍖哄垎
-        if (list.size() > 1) {
-            hashMap.put("result", list);
+        if (listResult.size() > 1) {
+            hashMap.put("result", listResult);
         } else {
-            hashMap.put("result", list.get(0).toString());
+            hashMap.put("result", listResult.get(0).toString());
         }
+        hashMap.put("equipName", device.getDeviceName());
+        hashMap.put("equipValue", device.getManagementNumber());
         return hashMap;
     }
 
@@ -355,7 +373,7 @@
                 list = analyzeDataEntrustCodAndSampleCode(data, v, k, ",", device, entrustCode, sampleCode);
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(list, v.get(0), k);
+            Object resultValue = calculationFormula(list, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -383,7 +401,7 @@
                 list = analyzeDataEntrustCodAndSampleCode(processingDataAfterSpaces, v, k, splitIdentifier, device, entrustCode, sampleCode);
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(list, v.get(0), k);
+            Object resultValue = calculationFormula(list, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -409,7 +427,7 @@
                 list = analyzeDataEntrustCodAndSampleCode(data, v, k, splitIdentifier, device, entrustCode, sampleCode);
             }
             // 杩涜鍏紡璁$畻
-            Object resultValue = calculationFormula(list, v.get(0), k);
+            Object resultValue = calculationFormula(list, v.get(0), k, device);
             map.put(k, resultValue);
         });
         return map;
@@ -613,4 +631,129 @@
         // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
         return ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
     }
+
+    public static String calculationFormulaList(List<Object> list, String formula) {
+        //棣栧厛灏唋ist杞崲涓篵igdecmic
+        List<BigDecimal> bigDecimalList = list.stream()
+                .map(obj -> {
+                    return new BigDecimal((obj).toString());
+                }).collect(Collectors.toList());
+        System.out.println(bigDecimalList);
+
+        //灏嗕腑鏂囩殑(杞崲鑻辨枃鐨�())
+        formula = formula.replace("锛�", "(")
+                .replace("锛�", ")")
+                .replace("锛�", ",");
+        //鐒跺悗鎻愬彇鍏紡
+        String strs = formula.substring(0, formula.indexOf("("));
+        String upperStr = strs.toUpperCase();
+        if (upperStr.matches(".*\\d.*")) {
+            upperStr = "";
+        }
+        System.out.println(upperStr);
+        //鐒跺悗鑾峰彇鏈�澶栭潰鎷彿閲岄潰鐨勫��,鍐嶆牴鎹�","鍒嗗壊
+        int start = formula.indexOf("(");
+        int end = -1;
+        int a = 0;
+        for (int i = start; i < formula.length(); i++) {
+            char c = formula.charAt(i);
+            if (c == '(') {
+                a++;
+            } else if (c == ')') {
+                a--;
+                if (a == 0) {
+                    end = i;
+                }
+            }
+        }
+        if (start == -1 || end == -1) {
+            throw new ErrorException("鍏紡鎷彿涓嶅尮閰�: " + formula);
+        }
+
+        String argumentsStr = formula.substring(start + 1, end);
+        List<String> arguments = new ArrayList<>();
+        int bracketCount = 0;
+        StringBuilder currentArgument = new StringBuilder();
+        for (char c : argumentsStr.toCharArray()) {
+            if (c == ',' && bracketCount == 0) {
+                arguments.add(currentArgument.toString());
+                currentArgument.setLength(0);
+            } else {
+                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) {
+            System.out.println("鏇挎崲鍓�" + expr);
+            Pattern pattern = Pattern.compile("([A-Z])(\\d+)");
+            Matcher matcher = pattern.matcher(expr);
+            StringBuffer sb = new StringBuffer();
+            while (matcher.find()) {
+                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 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);
+            }
+        }
+        // 鏍规嵁鍑芥暟鍚嶇О杩涜鐩稿簲璁$畻
+        BigDecimal finalResult;
+        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);
+
+        return finalResult.toString();
+        // 鍚﹀垯锛氭病鏈夊叕寮忎唬琛ㄤ笉闇�瑕佽绠楋紝鐩存帴鎻愬彇List閲岄潰鐨勬暟鎹�
+    }
 }
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
index 8a5a003..55b0d48 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderMapper.java
@@ -53,9 +53,4 @@
     List<Map<Integer, Object>> selectReportModelByOrderId(@Param("id") Integer id, @Param("laboratory") String laboratory);
 
     String seldepLimsId(int depLimsId);
-
-    Map<String, Object> getDeviceMessage(@Param("ip")String ip,
-                                         @Param("inspectionItem") String inspectionItem,
-                                         @Param("inspectionItemSubclass") String inspectionItemSubclass,
-                                         @Param("sample") String sample);
 }
\ No newline at end of file
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
index 0c9bc4f..ed89e30 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -238,8 +238,6 @@
                 insProducts = insSampleMapper.getInsProduct3(id);
                 break;
         }
-        // 鏁伴噰鏂板
-        getDeviceMessage(insProducts, request);
 
         Set<Integer> set = new HashSet<>();
         Map<Integer, String> map2 = new HashMap<>();
@@ -248,33 +246,6 @@
         return insProducts;
     }
 
-    private List<InsProduct> getDeviceMessage(List<InsProduct> insProducts, HttpServletRequest request) {
-        String ipAddress = request.getRemoteAddr();
-        // 闃叉鍥炵幆鍦板潃鍙樹负IPv6
-        String ip =  ipAddress.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ipAddress;
-        insProducts.forEach(i -> {
-            Map<String, Object> devices = baseMapper.getDeviceMessage(ip, i.getInspectionItem(), i.getInspectionItemSubclass(), i.getSampleType());
-            if (ObjectUtils.isNotEmpty(devices) && ObjectUtils.isNotEmpty(devices.get("file_type")) && ObjectUtils.isNotEmpty(devices.get("collect_url"))) {
-                InsProductResult insProductResult = i.getInsProductResult();
-                if (ObjectUtils.isEmpty(insProductResult)) {
-                    insProductResult = new InsProductResult();
-                }
-                List<Object> list = new ArrayList<>();
-                Map<Object, Object> hashMap = new HashMap<>();
-                hashMap.put("v", devices.get("device_name"));
-                list.add(hashMap);
-                insProductResult.setEquipName(JSON.toJSON(list).toString());
-                List<Object> listValue = new ArrayList<>();
-                Map<Object, Object> hashMapValue = new HashMap<>();
-                hashMapValue.put("v", devices.get("management_number"));
-                listValue.add(hashMapValue);
-                insProductResult.setEquipName(JSON.toJSON(list).toString());
-                insProductResult.setEquipValue(JSON.toJSON(listValue).toString());
-                i.setInsProductResult(insProductResult);
-            }
-        });
-        return insProducts;
-    }
     @Override
     public List<String> checkSubmitPlan(Integer orderId, String laboratory) {
         List<String> collect = new ArrayList<>();
diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
index 4e1996c..bf07385 100644
--- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
+++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -475,22 +475,4 @@
         from department_lims
         where id = #{depLimsId}
     </select>
-
-    <select id="getDeviceMessage" resultType="java.util.Map">
-        select d.device_name, d.management_number, d.file_type, d.collect_url
-        FROM
-            device d,
-            device_data_config ddc
-        <if test="sample != '' and sample != null">
-            inner join structure_item_parameter sip on sip.sample like concat('%', #{sample}, '%') and sip.id = ddc.structure_item_parameter_id
-        </if>
-        where d.ip = #{ip}
-          and ddc.inspection_item = #{inspectionItem}
-            <if test="inspectionItemSubclass != '' and inspectionItemSubclass != null">
-                and ddc.inspection_item_subclass = #{inspectionItemSubclass}
-            </if>
-          and d.device_status = 0
-          and d.ins_product_ids is not null
-        limit 1
-    </select>
 </mapper>

--
Gitblit v1.9.3