From 97bb7a8832281eafe0ef947ea095258d355e52f5 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 30 十二月 2024 15:57:51 +0800
Subject: [PATCH] 无源器件的数采+电路模版查询

---
 inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java |  227 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 218 insertions(+), 9 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java
index 3542482..ea0419d 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java
@@ -28,6 +28,8 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @Component
@@ -69,7 +71,6 @@
         List<InsProductResult2> result2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                 .eq(InsProductResult2::getNum, orderStates.get(0).getNum())
                 .in(InsProductResult2::getInsProductId, insProducts.stream().distinct().map(InsProduct::getId).collect(Collectors.toList())));
-        //List<InsProduct> productList = getInsProduct(sampleId, "鐢佃矾璇曢獙");
         //鏍规嵁棰戠偣鍒嗙被
         Map<String, List<HuTiaoData>> collect = huTiaoData.stream()
                 .collect(Collectors.groupingBy(HuTiaoData::getOften, LinkedHashMap::new, Collectors.toList()));
@@ -106,14 +107,18 @@
                 for (String s : list) {
                     String[] mHzs = s.split("MHz")[0].split("-");
                     //鍐嶅垽鏂繖涓鐐规槸鍚﹀湪棰戞鐨勮寖鍥村唴
-                    if (Integer.parseInt(stringListEntry.getKey()) <= Integer.parseInt(mHzs[1]) && Integer.parseInt(stringListEntry.getKey()) >= Integer.parseInt(mHzs[0])) {
+                    if (stringListEntry.getKey().equals("700")){
+                        insProductResult2.setFrequency("703-803MHz");
+                        break;
+                    }
+                    else if (Integer.parseInt(stringListEntry.getKey()) <= Integer.parseInt(mHzs[1]) && Integer.parseInt(stringListEntry.getKey()) >= Integer.parseInt(mHzs[0])) {
                         insProductResult2.setFrequency(s);
                         break;
                     }
                 }
-                if (ObjectUtils.isEmpty(insProductResult2.getFrequency())) {
-                    throw new ErrorException("娌℃湁鎵惧埌" + stringListEntry.getKey() + "瀵瑰簲鐨勯娈�");
-                }
+            }
+            if (ObjectUtils.isEmpty(insProductResult2.getFrequency())) {
+                throw new ErrorException("娌℃湁鎵惧埌" + stringListEntry.getKey() + "瀵瑰簲鐨勯娈典俊鎭�,璇峰厛閫夋嫨棰戞淇℃伅杩涜淇濆瓨");
             }
             insProductResult2s.add(insProductResult2);
         }
@@ -136,6 +141,10 @@
         List<InsProduct> products1 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鐢靛帇椹绘尝姣�")).collect(Collectors.toList());
         //鏌ヨ璇ユ牱鍝佺殑鍚屾瀬鍖栭殧绂诲害椤圭洰id
         List<InsProduct> products2 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鍚屾瀬鍖栭殧绂诲害")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑闅旂搴﹂」鐩甶d
+        List<InsProduct> products6 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鍚屽垪闅旂搴�")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑绔彛闂撮殧绂诲害椤圭洰id
+        List<InsProduct> products7 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("绔彛闂撮殧绂诲害")).collect(Collectors.toList());
         //鏌ヨ璇ユ牱鍝佺殑寮傛瀬鍖栭殧绂诲害椤圭洰id
         List<InsProduct> products3 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("寮傛瀬鍖栭殧绂诲害")).collect(Collectors.toList());
         //鏌ヨ璇ユ牱鍝佺殑骞呭害鍋忓樊椤圭洰id
@@ -164,7 +173,38 @@
                     String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
                     insProductResult2.setValue("[[" + value + "]]");//鍊�
                     insProductResult2s.add(insProductResult2);
-                } else if (entry.getKey().contains("鍚屾瀬鍖栭殧绂�") || entry.getKey().contains("鍚屽垪闅旂")) {
+                } else if (entry.getKey().contains("鍚屽垪闅旂")) {
+                    if (products6.size() <= 0) {
+                        throw new ErrorException("闅旂搴﹂」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setInsProductId(products6.get(0).getId());//鍚屽垪闅旂
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                } else if (entry.getKey().contains("绔彛闂撮殧绂�")) {
+                    if (products7.size() <= 0) {
+                        throw new ErrorException("绔彛闂撮殧绂婚」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setInsProductId(products7.get(0).getId());//绔彛闂撮殧绂�
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("鍚屾瀬鍖栭殧绂�")) {
                     if (products2.size() <= 0) {
                         throw new ErrorException("鍚屾瀬鍖栭殧绂婚」鐩湭鎵惧埌");
                     }
@@ -179,7 +219,7 @@
                     String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
                     insProductResult2.setValue("[[" + value + "]]");//鍊�
                     insProductResult2s.add(insProductResult2);
-                } else if (entry.getKey().contains("寮傛瀬鍖栭殧绂�") || entry.getKey().contains("绔彛闂撮殧绂�")) {
+                } else if (entry.getKey().contains("寮傛瀬鍖栭殧绂�")) {
                     if (products3.size() <= 0) {
                         throw new ErrorException("寮傛瀬鍖栭殧绂婚」鐩湭鎵惧埌");
                     }
@@ -303,8 +343,177 @@
                 filteredList.add(result2);
             }
         }
-        System.out.println(filteredList);
-        //insProductResult2Service.saveBatch(filteredList);
+        insProductResult2Service.saveBatch(filteredList);
+    }
+
+    //璇诲彇csv鐨勬枃浠�(鏃犳簮鍣ㄤ欢)
+    public void readDianLuFile3(Integer sampleId, InsOrderFile insOrderFile) {
+        List<InsProductResult2> insProductResult2s = new ArrayList<>();
+        String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰�
+        List<TianXianData> tianXianData = readExcelData2(excelFilePath);
+        //鏌ヨ妫�楠屼换鍔d
+        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
+                .eq(InsOrderState::getInsSampleId, sampleId)
+                .eq(InsOrderState::getLaboratory, "鐢佃矾璇曢獙"));
+        List<InsProduct> products = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                .eq(InsProduct::getState, 1)
+                .eq(InsProduct::getInsSampleId, sampleId));
+        //鏌ヨ璇ユ牱鍝佺殑鐢靛帇椹绘尝姣旈」鐩甶d
+        List<InsProduct> products1 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鐢靛帇椹绘尝姣�")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑鏃犳簮鍣ㄤ欢闅旂搴﹂」鐩甶d
+        List<InsProduct> products2 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鏃犳簮鍣ㄤ欢闅旂搴�")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑鎻掑叆鎹熻�楅」鐩甶d
+        List<InsProduct> products3 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鎻掑叆鎹熻��")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑甯﹀唴娉㈠姩椤圭洰id
+        List<InsProduct> products4 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("甯﹀唴娉㈠姩")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑甯﹀鎶戝埗椤圭洰id
+        List<InsProduct> products5 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("甯﹀鎶戝埗")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑鏈�澶ц�﹀悎搴﹂」鐩甶d
+        List<InsProduct> products6 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鏈�澶ц�﹀悎搴�")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑鏈�灏忚�﹀悎搴﹂」鐩甶d
+        List<InsProduct> products7 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("鏈�灏忚�﹀悎搴�")).collect(Collectors.toList());
+        //鑾峰彇鎵�鏈夐娈�,鏍规嵁棰戞杩涜鍒嗙被
+        Map<String, List<TianXianData>> map = tianXianData.stream().collect(Collectors.groupingBy(TianXianData::frequency, LinkedHashMap::new, Collectors.toList()));
+        for (Map.Entry<String, List<TianXianData>> listEntry : map.entrySet()) {
+            //鑾峰彇淇℃伅,鏍规嵁妫�楠岄」鐩繘琛屽垎绫�
+            Map<String, List<TianXianData>> collect = listEntry.getValue().stream().collect(Collectors.groupingBy(TianXianData::getName, LinkedHashMap::new, Collectors.toList()));
+            for (Map.Entry<String, List<TianXianData>> entry : collect.entrySet()) {
+                InsProductResult2 insProductResult2 = new InsProductResult2();
+                if (entry.getKey().contains("椹绘尝")) {
+                    if (products1.size() <= 0) {
+                        throw new ErrorException("鐢靛帇椹绘尝姣旈」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setInsProductId(products1.get(0).getId());//鐢靛帇椹绘尝姣�
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("闅旂搴�")) {
+                    if (products2.size() <= 0) {
+                        throw new ErrorException("闅旂搴﹂」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setInsProductId(products2.get(0).getId());//鏃犳簮鍣ㄤ欢闅旂搴�
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("鎻掑叆鎹熻��")) {
+                    if (products3.size() <= 0) {
+                        throw new ErrorException("鎻掑叆鎹熻�楅」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setInsProductId(products3.get(0).getId());//鎻掑叆鎹熻��
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("甯﹀唴娉㈠姩")) {
+                    if (products4.size() <= 0) {
+                        throw new ErrorException("甯﹀唴娉㈠姩椤圭洰鏈壘鍒�");
+                    }
+                    insProductResult2.setInsProductId(products4.get(0).getId());//甯﹀唴娉㈠姩
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("甯﹀鎶戝埗")) {
+                    if (products5.size() <= 0) {
+                        throw new ErrorException("甯﹀鎶戝埗椤圭洰鏈壘鍒�");
+                    }
+                    insProductResult2.setInsProductId(products5.get(0).getId());//甯﹀鎶戝埗
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+                else if (entry.getKey().contains("鑰﹀悎搴�")) {
+                    if (products6.size() <= 0 || products7.size()<=0) {
+                        throw new ErrorException("鑰﹀悎搴﹂」鐩湭鎵惧埌");
+                    }
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    //鑾峰彇绔彛
+                    String port = entry.getValue().stream().map(TianXianData::getPort).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+
+                    /*鏈�澶ц�﹀悎搴�*/
+                    insProductResult2.setInsProductId(products6.get(0).getId());//鏈�澶ц�﹀悎搴�
+                    //鑾峰彇妫�楠屽��
+                    String value = entry.getValue().stream().map(tianXianData1 -> {
+                        String input = tianXianData1.getValue().replace("[", "").replace("]", "");
+                        String[] parts = input.split("--");
+                        return "\"" + "-"+parts[1] + "\"" ; }).collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                    /*鏈�灏忚�﹀悎搴�*/
+                    insProductResult2.setInsProductId(products7.get(0).getId());//鏈�灏忚�﹀悎搴�
+                    String value1 = entry.getValue().stream().map(tianXianData1 -> {
+                        String input = tianXianData1.getValue().replace("[", "").replace("]", "");
+                        String[] parts = input.split("--");
+                        return "\"" +parts[0] + "\"" ; }).collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value1 + "]]");//鍊�
+                    insProductResult2s.add(insProductResult2);
+                }
+            }
+        }
+
+        Map<String, List<InsProductResult2>> groupedMap = insProductResult2s.stream()
+                .collect(Collectors.groupingBy(item -> item.getInsProductId() + "_" + item.getFrequency()));
+        // 杩囨护鍑哄垎缁勫悗鏁伴噺绛変簬1鐨勭粍
+        List<InsProductResult2> filteredList = groupedMap.values().stream()
+                .filter(list -> list.size() == 1)
+                .flatMap(List::stream)
+                .collect(Collectors.toList());
+        for (Map.Entry<String, List<InsProductResult2>> entry : groupedMap.entrySet()) {
+            if (entry.getValue().size() > 1) {
+                InsProductResult2 result2 = new InsProductResult2();
+                result2.setInsProductId(Integer.parseInt(entry.getKey().split("_")[0]));
+                result2.setFrequency(entry.getKey().split("_")[1]);
+                result2.setPort(entry.getValue().stream().map(InsProductResult2::getPort).collect(Collectors.joining(",")));
+                String value = entry.getValue().stream().map(insProductResult2 -> {
+                    return insProductResult2.getValue().replace("[[", "").replace("]]", "");
+                }).collect(Collectors.joining(","));
+                result2.setValue("[[" + value + "]]");
+                result2.setAngle("0掳");
+                result2.setOften(entry.getValue().stream().map(InsProductResult2::getOften).collect(Collectors.joining(",")));
+                filteredList.add(result2);
+            }
+        }
+        insProductResult2Service.saveBatch(filteredList);
     }
 
 

--
Gitblit v1.9.3