From a7418fdc3875d68b03f5d89ceaa0c66a8e3902cd Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 24 十二月 2025 14:03:54 +0800
Subject: [PATCH] 销售订单报检区分物料属性

---
 cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java |   80 ++++++++++++++++++++++++++++++---------
 1 files changed, 61 insertions(+), 19 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
index 622525b..ef616a4 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/utils/DataAcquisition.java
@@ -128,11 +128,12 @@
                 case ".docx":
                     map = analysisString(data, userMap, device, entrustCode, sampleCode);
                     break;
+                case ".xls":
                 case ".xlsx":
                     map = analysisList(data, userMap, device, entrustCode, sampleCode);
                     break;
-                case ".xls":
-                    map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
+                case ".pngInExcel":
+                    map = analysisPngInExcel(data, userMap, device, entrustCode, sampleCode);
                     break;
                 case ".txt":
                     map = analysisTxt(data, userMap, device, entrustCode, sampleCode);
@@ -345,23 +346,25 @@
                 }
             }
             // 鎷兼帴鏁伴噰閰嶇疆
-            List<Object> result = new ArrayList<>();
-            for (int i = 0; i < numberOfDataEntries.get(); i++) {
-                String aggregate = "";
-                for (int j = 0; j < v.size(); j++) {
-                    int index;
-                    if (j == 0) {
-                        index = i;
-                    } else {
-                        index = numberOfDataEntries.get() + i;
-                    }
-                    aggregate += list.get(index).toString() + ",";
-                }
-                int lastIndex = aggregate.lastIndexOf(",");
-                String substring = aggregate.substring(0, lastIndex);
-                result.add(substring);
-
-            }
+            List<Object> result = new ArrayList<>(list);
+//            String join = String.join(",", list.stream().map(String::valueOf).collect(Collectors.toList()));
+//            result.add(join);
+//            for (int i = 0; i < numberOfDataEntries.get(); i++) {
+//                String aggregate = "";
+//                for (int j = 0; j < v.size(); j++) {
+//                    int index;
+//                    if (j == 0) {
+//                        index = i;
+//                    } else {
+//                        index = numberOfDataEntries.get() + i;
+//                    }
+//                    aggregate += list.get(index).toString() + ",";
+//                }
+//                int lastIndex = aggregate.lastIndexOf(",");
+//                String substring = aggregate.substring(0, lastIndex);
+//                result.add(substring);
+//
+//            }
             // 杩涜鍏紡璁$畻
             Object resultValue = calculationFormula(result, v.get(0), k, device);
             map.put(k, resultValue);
@@ -571,6 +574,45 @@
     }
 
     /**
+     * 瑙f瀽excel涓瘑鍒埌鐨勫浘鐗囧唴瀹�
+     *
+     * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
+     * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
+     * @return
+     */
+    private static Map<String, Object> analysisPngInExcel(String data, Map<String, List<DataConfig>> dataConfig,
+                                                   Device device, String entrustCode, String sampleCode) {
+        Map<String, Object> map = new HashMap<>();
+        //澶勭悊data
+        Map<String,List<Object>> dataMap = new HashMap<>();
+        String[] rows = data.split("\n");
+        String[] headRow = rows[0].split(" ");//鑾峰彇琛ㄥご鍒楄〃
+        for (int i = 0; i < headRow.length; i++) {
+            //鏁版嵁鏈�澶氫簲鏉�
+            List<Object> vals = new ArrayList<>();
+            for (int j = 1; j <= 5; j++) {
+                String[] cols = rows[j].split(" ");
+                vals.add(cols[i]);
+            }
+            dataMap.put(headRow[i],vals);
+        }
+        dataConfig.forEach((k, v) -> {
+            List<Object> list = new ArrayList<>();
+            v.stream().sorted(Comparator.comparing(DataConfig::getX)).forEach(config->{
+                for (Map.Entry<String, List<Object>> entry : dataMap.entrySet()) {
+                    if(entry.getKey().contains(config.getReferx())){
+                        list.addAll(entry.getValue());
+                    }
+                }
+            });
+            // 杩涜鍏紡璁$畻
+            Object resultValue = calculationFormula(list, v.get(0), k, device);
+            map.put(k, resultValue);
+        });
+        return map;
+    }
+
+    /**
      * @param data       閲囬泦鍒扮殑鏂囦欢瀛楃涓�
      * @param dataConfig 鐢ㄦ埛閰嶇疆濂界殑x,y杞村畾浣嶆暟鎹笌鍙傜収鐗�
      * @return

--
Gitblit v1.9.3