From 8d4ad0d13ef71e22cc1036e2c6c00aafb20ed597 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 10 十二月 2024 17:41:58 +0800
Subject: [PATCH] 电路试验的驻波比csv报告解析

---
 system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java                 |    2 
 inspect-server/src/main/java/com/yuanchu/mom/excel/TianXianData.java                   |   46 ++++++
 inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java                    |  305 +++++++++++++++++++++++++++++++++++++++----
 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java |   21 ++-
 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java    |   12 +
 user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java             |    3 
 inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDtos.java             |   11 +
 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java          |    2 
 8 files changed, 357 insertions(+), 45 deletions(-)

diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
index 6713044..c5856b2 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -5,10 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.annotation.ValueAuth;
 import com.yuanchu.mom.annotation.ValueClassify;
-import com.yuanchu.mom.dto.InsOrderPlanDTO;
-import com.yuanchu.mom.dto.InsProductDto;
-import com.yuanchu.mom.dto.InsProductResultDto;
-import com.yuanchu.mom.dto.SubmitPlanDto;
+import com.yuanchu.mom.dto.*;
 import com.yuanchu.mom.mapper.InsSampleUserMapper;
 import com.yuanchu.mom.pojo.InsOrderFile;
 import com.yuanchu.mom.pojo.InsOrderState;
@@ -150,6 +147,13 @@
         return Result.success(insOrderPlanService.saveInsContext2(insProductResultDtos));
     }
 
+    @ApiOperation(value = "鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�(杩斿洖/鎻愪氦)")
+    @PostMapping("/saveInsContext2s")
+    @ValueAuth
+    public Result<?> saveInsContext2s(@RequestBody InsProductResultDtos insProductResultDtos) {
+        return Result.success(insOrderPlanService.saveInsContext2s(insProductResultDtos));
+    }
+
     @ApiOperation(value = "娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹�")
     @PostMapping("/saveInsContext3")
     @ValueAuth
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDtos.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDtos.java
new file mode 100644
index 0000000..e16f342
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/InsProductResultDtos.java
@@ -0,0 +1,11 @@
+package com.yuanchu.mom.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InsProductResultDtos {
+
+    private List<InsProductResultDto> insProductResultDtos;
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/excel/TianXianData.java b/inspect-server/src/main/java/com/yuanchu/mom/excel/TianXianData.java
new file mode 100644
index 0000000..6ad2432
--- /dev/null
+++ b/inspect-server/src/main/java/com/yuanchu/mom/excel/TianXianData.java
@@ -0,0 +1,46 @@
+package com.yuanchu.mom.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+@Data
+public class TianXianData {
+
+    @ExcelProperty(index = 0)
+    private String no;
+
+    @ExcelProperty(index = 1)
+    private String code;
+
+    @ExcelProperty(index = 2)
+    private String port;
+
+    @ExcelProperty(index = 3)
+    private String name;
+
+    @ExcelProperty(index = 4)
+    private String angle;
+
+    @ExcelProperty(index = 5)
+    private String start;
+
+    @ExcelProperty(index = 6)
+    private String end;
+
+    @ExcelProperty(index = 7)
+    private String ask;
+
+    @ExcelProperty(index = 8)
+    private String value;
+
+    @ExcelProperty(index = 9)
+    private String result;
+
+    public String frequency() {
+        return (int)Double.parseDouble(start) + "-" + (int)Double.parseDouble(end) + "MHz";
+    }
+}
diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
index 8a34598..1d62a95 100644
--- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
+++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yuanchu.mom.dto.InsOrderPlanDTO;
 import com.yuanchu.mom.dto.InsProductResultDto;
+import com.yuanchu.mom.dto.InsProductResultDtos;
 import com.yuanchu.mom.dto.SubmitPlanDto;
 import com.yuanchu.mom.pojo.InsOrderFile;
 import com.yuanchu.mom.pojo.InsOrderUser;
@@ -66,4 +67,5 @@
 
     int saveInsContext3(InsProductResult insProductResult);
 
+    int saveInsContext2s(InsProductResultDtos insProductResultDtos);
 }
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 28d5611..b3db4df 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
@@ -17,10 +17,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yuanchu.mom.common.GetLook;
 import com.yuanchu.mom.common.PrintChina;
-import com.yuanchu.mom.dto.InsOrderPlanDTO;
-import com.yuanchu.mom.dto.InsProductResultDto;
-import com.yuanchu.mom.dto.SampleProductDto;
-import com.yuanchu.mom.dto.SubmitPlanDto;
+import com.yuanchu.mom.dto.*;
 import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.*;
 import com.yuanchu.mom.pojo.*;
@@ -347,14 +344,15 @@
             file.transferTo(new File(urlString));
             insOrderFile.setFileUrl(pathName);
             insOrderFileMapper.insert(insOrderFile);
-            //濡傛灉鏄緪灏勮瘯楠�(杩戝満/杩滅▼涓婁紶鐨刢sv鏂囦欢)
             String[] split = filename.split("\\.");
             if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩戝満") && split[split.length - 1].equals("csv")) {
                 fuSheUtils.getFuSheWord1(sonLaboratory, insOrderFile);
             } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("杩滃満") && split[split.length - 1].equals("xlsx")) {
                 fuSheUtils.getFuSheWord2(sonLaboratory, insOrderFile);
-            }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("xlsx") && filename.contains("浜よ皟")) {
-               dianLuUtils.readDianLuFile1(sampleId,insOrderFile);
+            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("xlsx") && filename.contains("浜よ皟")) {
+                dianLuUtils.readDianLuFile1(sampleId, insOrderFile);
+            } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && filename.contains("椹绘尝")) {
+                dianLuUtils.readDianLuFile2(sampleId, insOrderFile);
             }
         } catch (Exception e) {
             System.err.println("闄勪欢涓婁紶閿欒");
@@ -877,6 +875,15 @@
         return list;
     }
 
+    //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹�(杩斿洖/鎻愪氦)
+    @Override
+    public int saveInsContext2s(InsProductResultDtos insProductResultDtos) {
+        for (InsProductResultDto insProductResultDto : insProductResultDtos.getInsProductResultDtos()) {
+            saveInsContext2(insProductResultDto);
+        }
+       return  1;
+    }
+
     //娓╂箍搴﹁瘯楠�+鍔熺巼璇曢獙鐨勪繚瀛樻楠屽唴瀹�
     @Override
     public int saveInsContext3(InsProductResult insProductResult) {
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 2f2c23d..3542482 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
@@ -7,17 +7,26 @@
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.yuanchu.mom.excel.HuTiaoData;
+import com.yuanchu.mom.excel.TianXianData;
+import com.yuanchu.mom.exception.ErrorException;
 import com.yuanchu.mom.mapper.InsOrderStateMapper;
 import com.yuanchu.mom.mapper.InsProductMapper;
 import com.yuanchu.mom.mapper.InsProductResult2Mapper;
 import com.yuanchu.mom.mapper.InsSampleMapper;
 import com.yuanchu.mom.pojo.*;
 import com.yuanchu.mom.service.InsOrderPlanService;
+import com.yuanchu.mom.service.InsProductResult2Service;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -31,46 +40,54 @@
     private InsProductMapper insProductMapper;
 
     @Resource
-    private InsSampleMapper insSampleMapper;
+    private InsProductResult2Mapper insProductResult2Mapper;
 
     @Resource
-    private InsProductResult2Mapper insProductResult2Mapper;
+    private InsProductResult2Service insProductResult2Service;
 
     @Resource
     private InsOrderStateMapper insOrderStateMapper;
 
     //璇诲彇浜掕皟鐨勬枃浠�
-    public void readDianLuFile1(Integer sampleId,InsOrderFile insOrderFile) {
+    public void readDianLuFile1(Integer sampleId, InsOrderFile insOrderFile) {
+        List<InsProductResult2> insProductResult2s = new ArrayList<>();
         String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰�
-        List<HuTiaoData> huTiaoData = readExcelData(excelFilePath);
-        //鏌ヨ璇ユ牱鍝佺殑浜掕皟椤圭洰id
-        List<InsProduct> products = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+        List<HuTiaoData> huTiaoData = readExcelData1(excelFilePath);
+        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                 .eq(InsProduct::getState, 1)
-                .eq(InsProduct::getInsSampleId, sampleId)
-                .eq(InsProduct::getInspectionItemSubclass, "浜掕皟"));
+                .eq(InsProduct::getInsSampleId, sampleId));
+        //鏌ヨ璇ユ牱鍝佺殑浜掕皟椤圭洰id
+        List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("浜掕皟")).collect(Collectors.toList());
+        if (ObjectUtils.isEmpty(products)) {
+            throw new ErrorException("璇ユ牱鍝佹病鏈変簰璋冮」鐩�");
+        }
         //鏌ヨ妫�楠屼换鍔d
         List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                 .eq(InsOrderState::getInsSampleId, sampleId)
                 .eq(InsOrderState::getLaboratory, "鐢佃矾璇曢獙"));
         //鏌ヨ鍘熸湁妫�楠屾暟鎹�
-        List<InsProduct> productList = getInsProduct(sampleId, "鐢佃矾璇曢獙");
+        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()));
+        Map<String, List<HuTiaoData>> collect = huTiaoData.stream()
+                .collect(Collectors.groupingBy(HuTiaoData::getOften, LinkedHashMap::new, Collectors.toList()));
         for (Map.Entry<String, List<HuTiaoData>> stringListEntry : collect.entrySet()) {
             InsProductResult2 insProductResult2 = new InsProductResult2();
-            insProductResult2.setOften(stringListEntry.getKey()+"(M)");//棰戠偣
+            insProductResult2.setOften(stringListEntry.getKey() + "(M)");//棰戠偣
             //鏍规嵁涓嬪�捐杩涜鍒嗙被
-            Map<String, List<HuTiaoData>> collect1 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getAngle,LinkedHashMap::new, Collectors.toList()));
+            Map<String, List<HuTiaoData>> collect1 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getAngle, LinkedHashMap::new, Collectors.toList()));
             String angles = collect1.entrySet().stream().map(stringListEntry1 -> stringListEntry1.getKey() + "掳").collect(Collectors.joining(","));
             insProductResult2.setAngle(angles); //涓嬪�捐
             //鏍规嵁绔彛鍙疯繘琛屽垎绫�
-            Map<String, List<HuTiaoData>> collect2 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort,LinkedHashMap::new, Collectors.toList()));
+            Map<String, List<HuTiaoData>> collect2 = stringListEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort, LinkedHashMap::new, Collectors.toList()));
             String ports = collect2.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.joining(","));
             insProductResult2.setPort(ports); //绔彛鍙�
             //閫氳繃鍚屼竴绔彛鍙峰悓涓�涓嬪�捐鑾峰彇鏈�澶ф楠屽��
             List<String> string = new ArrayList<>();
             for (Map.Entry<String, List<HuTiaoData>> listEntry : collect1.entrySet()) {
-                Map<String, List<HuTiaoData>> collect3 = listEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort,LinkedHashMap::new, Collectors.toList()));
+                Map<String, List<HuTiaoData>> collect3 = listEntry.getValue().stream().collect(Collectors.groupingBy(HuTiaoData::getPort, LinkedHashMap::new, Collectors.toList()));
                 List<String> stringList = new ArrayList<>();
                 for (Map.Entry<String, List<HuTiaoData>> entry : collect3.entrySet()) {
                     OptionalDouble max = entry.getValue().stream().mapToDouble(value -> Double.parseDouble(value.getValue())).max();
@@ -84,15 +101,214 @@
             //娆℃暟
             insProductResult2.setNum(orderStates.get(0).getNum());
             //棰戞(鍏堝垽鏂師鏈夋暟鎹槸鍚︽湁)
-            if (ObjectUtils.isNotEmpty(productList.get(0).getInsProductResult2())) {
-                insProductResult2.setFrequency(productList.get(0).getInsProductResult2().get(0).getFrequency());
+            if (ObjectUtils.isNotEmpty(result2s)) {
+                List<String> list = result2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList());
+                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])) {
+                        insProductResult2.setFrequency(s);
+                        break;
+                    }
+                }
+                if (ObjectUtils.isEmpty(insProductResult2.getFrequency())) {
+                    throw new ErrorException("娌℃湁鎵惧埌" + stringListEntry.getKey() + "瀵瑰簲鐨勯娈�");
+                }
             }
-            insProductResult2Mapper.insert(insProductResult2);
+            insProductResult2s.add(insProductResult2);
         }
+        insProductResult2Service.saveBatch(insProductResult2s);
+    }
+
+    //璇诲彇澶╃嚎鐨勬枃浠�
+    public void readDianLuFile2(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());
+        //鏌ヨ璇ユ牱鍝佺殑鍚屾瀬鍖栭殧绂诲害椤圭洰id
+        List<InsProduct> products2 = 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
+        List<InsProduct> products4 = products.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("骞呭害鍋忓樊")).collect(Collectors.toList());
+        //鏌ヨ璇ユ牱鍝佺殑鏈�澶х浉浣嶅亸宸」鐩甶d
+        List<InsProduct> products5 = 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("鍚屾瀬鍖栭殧绂�") || 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("寮傛瀬鍖栭殧绂�") || 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);
+                }
+            }
+        }
+        /*骞呭害鍜岀浉浣嶉渶瑕佸彟澶栧啓鍔熻兘*/
+        //鍏堣繃婊ゅ嚭绔彛鍙蜂竴鏍忎负鍋忓樊鍊肩殑鏁版嵁
+        List<TianXianData> dataList = tianXianData.stream().filter(tianXianData1 -> tianXianData1.getPort().equals("鍋忓樊鍊�")).collect(Collectors.toList());
+        //鍐嶆牴鎹楠岄」鐩繘琛屽垎缁�
+        Map<String, List<TianXianData>> collect = dataList.stream().collect(Collectors.groupingBy(TianXianData::getName, LinkedHashMap::new, Collectors.toList()));
+        for (Map.Entry<String, List<TianXianData>> entry : collect.entrySet()) {
+            if (entry.getKey().contains("骞呭害")) {
+                if (products4.size() <= 0) {
+                    throw new ErrorException("骞呭害鍋忓樊椤圭洰鏈壘鍒�");
+                }
+                Map<String, List<TianXianData>> listHashMap = new HashMap<>();
+                for (TianXianData xianData : entry.getValue()) {
+                    //鑾峰彇棰戞(鍏堟牴鎹畇tart瀛楁鍒ゆ柇杩欎釜棰戠偣鍦ㄥ摢涓娈典箣闂�)
+                    List<String> strings = map.keySet().stream().filter(s ->
+                            !s.split("MHz")[0].split("-")[0].equals(s.split("MHz")[0].split("-")[1])
+                    ).collect(Collectors.toList());
+                    for (String s : strings) {
+                        String[] mHzs = s.split("MHz")[0].split("-");
+                        //鍐嶅垽鏂繖涓鐐规槸鍚﹀湪棰戞鐨勮寖鍥村唴
+                        if (Double.parseDouble(xianData.getStart()) <= Double.parseDouble(mHzs[1]) && Double.parseDouble(xianData.getStart()) >= Double.parseDouble(mHzs[0])) {
+                            // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄨ繖涓敭鐨勬潯鐩�
+                            List<TianXianData> xianDataList = listHashMap.getOrDefault(s, new ArrayList<>());
+                            // 灏嗘暟鎹坊鍔犲埌鍒楄〃涓紝鑰屼笉鏄鐩栨棫鍊�
+                            xianDataList.add(xianData);
+                            // 灏嗘洿鏂板悗鐨勫垪琛ㄦ斁鍥瀖ap涓�
+                            listHashMap.put(s, xianDataList);
+                            break;
+                        }
+                    }
+                }
+                for (Map.Entry<String, List<TianXianData>> listEntry : listHashMap.entrySet()) {
+                    InsProductResult2 insProductResult2 = new InsProductResult2();
+                    insProductResult2.setInsProductId(products4.get(0).getId());//骞呭害鍋忓樊
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    //鑾峰彇绔彛
+                    String port = listEntry.getValue().stream().map(tianXianData1 -> String.valueOf((int) Double.parseDouble(tianXianData1.getStart()))).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = listEntry.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("鏈�澶х浉浣嶅亸宸」鐩湭鎵惧埌");
+                }
+                Map<String, List<TianXianData>> listHashMap = new HashMap<>();
+                for (TianXianData xianData : entry.getValue()) {
+                    //鑾峰彇棰戞(鍏堟牴鎹畇tart瀛楁鍒ゆ柇杩欎釜棰戠偣鍦ㄥ摢涓娈典箣闂�)
+                    List<String> strings = map.keySet().stream().filter(s ->
+                            !s.split("MHz")[0].split("-")[0].equals(s.split("MHz")[0].split("-")[1])
+                    ).collect(Collectors.toList());
+                    for (String s : strings) {
+                        String[] mHzs = s.split("MHz")[0].split("-");
+                        //鍐嶅垽鏂繖涓鐐规槸鍚﹀湪棰戞鐨勮寖鍥村唴
+                        if (Double.parseDouble(xianData.getStart()) <= Double.parseDouble(mHzs[1]) && Double.parseDouble(xianData.getStart()) >= Double.parseDouble(mHzs[0])) {
+                            // 妫�鏌ユ槸鍚﹀凡缁忓瓨鍦ㄨ繖涓敭鐨勬潯鐩�
+                            List<TianXianData> xianDataList = listHashMap.getOrDefault(s, new ArrayList<>());
+                            // 灏嗘暟鎹坊鍔犲埌鍒楄〃涓紝鑰屼笉鏄鐩栨棫鍊�
+                            xianDataList.add(xianData);
+                            // 灏嗘洿鏂板悗鐨勫垪琛ㄦ斁鍥瀖ap涓�
+                            listHashMap.put(s, xianDataList);
+                        }
+                    }
+                }
+                for (Map.Entry<String, List<TianXianData>> listEntry : listHashMap.entrySet()) {
+                    InsProductResult2 insProductResult2 = new InsProductResult2();
+                    insProductResult2.setInsProductId(products5.get(0).getId());//鏈�澶х浉浣嶅亸宸�
+                    insProductResult2.setAngle("0掳");//瑙掑害
+                    insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟
+                    insProductResult2.setFrequency(listEntry.getKey());//棰戞
+                    //鑾峰彇绔彛
+                    String port = listEntry.getValue().stream().map(tianXianData1 -> String.valueOf((int) Double.parseDouble(tianXianData1.getStart()))).collect(Collectors.joining(","));
+                    insProductResult2.setPort(port);//绔彛
+                    //鑾峰彇妫�楠屽��
+                    String value = listEntry.getValue().stream().map(tianXianData1 -> "\"" + tianXianData1.getValue() + "\"").collect(Collectors.joining(","));
+                    insProductResult2.setValue("[[" + value + "]]");//鍊�
+                    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);
+            }
+        }
+        System.out.println(filteredList);
+        //insProductResult2Service.saveBatch(filteredList);
     }
 
 
-    public static List<HuTiaoData> readExcelData(String filePath) {
+    public static List<HuTiaoData> readExcelData1(String filePath) {
         List<HuTiaoData> dataList = new ArrayList<>();
 
         // 鍒濆鍖栫洃鍚櫒
@@ -115,21 +331,46 @@
         return dataList;
     }
 
-    public List<InsProduct> getInsProduct(Integer id, String laboratory) {
-        List<InsProduct> insProducts = new ArrayList<>();
-        //鏍峰搧
-        insProducts = insSampleMapper.getInsProduct1(id, laboratory);
-        if (insProducts.size() == 0) {
-            insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
-                    .eq(InsProduct::getInsSampleId, id)
-                    .eq(InsProduct::getState, 1)
-                    .eq(InsProduct::getSonLaboratory, laboratory));
-            for (InsProduct insProduct : insProducts) {
-                List<InsProductResult2> insProductResult2List = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
-                        .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum));
-                insProduct.setInsProductResult2(insProductResult2List);
+    public static List<TianXianData> readExcelData2(String filePath) {
+        List<TianXianData> dataList = new ArrayList<>();
+
+        // 鍒濆鍖栫洃鍚櫒
+        AnalysisEventListener<TianXianData> listener = new AnalysisEventListener<TianXianData>() {
+            @Override
+            public void invoke(TianXianData data, AnalysisContext context) {
+                // 澶勭悊姣忚鏁版嵁锛岃繖閲岀畝鍗曞湴娣诲姞鍒版暟鎹垪琛ㄤ腑
+                dataList.add(data);
             }
+
+            @Override
+            public void doAfterAllAnalysed(AnalysisContext context) {
+                // 鎵�鏈夋暟鎹В鏋愬畬鎴愬悗鐨勬搷浣滐紝杩欓噷鏆備笉瀹炵幇
+            }
+        };
+
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "GB2312"));
+             Workbook workbook = new XSSFWorkbook();
+             FileOutputStream fileOut = new FileOutputStream(filePath.replace("csv", "xlsx"))) {
+            Sheet sheet = workbook.createSheet("Sheet1");
+            String line;
+            int rowNum = 0;
+            while ((line = reader.readLine()) != null) {
+                Row row = sheet.createRow(rowNum++);
+                String[] columns = line.split(",");
+                for (int i = 0; i < columns.length; i++) {
+                    Cell cell = row.createCell(i);
+                    cell.setCellValue(columns[i]);
+                }
+            }
+            workbook.write(fileOut);
+            System.out.println("CSV 鏂囦欢宸叉垚鍔熻浆鎹负 Excel 鏂囦欢");
+        } catch (IOException e) {
+            e.printStackTrace();
         }
-        return insProducts;
+
+        // 璇诲彇Excel鏂囦欢
+        EasyExcel.read(filePath.replace("csv", "xlsx"), TianXianData.class, listener).sheet().headRowNumber(-1).doRead();
+        return dataList;
     }
+
 }
diff --git a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
index d4380f0..6b8370a 100644
--- a/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
+++ b/system-run/src/test/java/com/yuanchu/mom/SystemRunApplicationTest.java
@@ -36,7 +36,7 @@
 
     @Test
     void contextLoads() {
-        //dianLuUtils.readDianLuFile1();
+        //dianLuUtils.readDianLuFile2();
     }
 
 
diff --git a/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java b/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
index 7416b38..f9545a8 100644
--- a/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
+++ b/user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java
@@ -158,7 +158,8 @@
                 user.setAccount(person.getEmployeeID());
                 user.setPhone(person.getPhoneNumber());
                 user.setEmail(person.getCompanyEmail());
-                user.setIsCustom(person.getCompanyId().equals("SC2463") ? 0 : 1);
+                //todo 鏍规嵁瀹㈡埛鍏徃鐨勭紪鍙疯�屾敼鍙�
+                user.setIsCustom(person.getCompanyId().equals("SC2301") ? 0 : 1);
                 user.setPassword(DigestUtils.md5DigestAsHex("zttZTT123!".getBytes()));
                 user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName);
                 user.setAddress("鏈~鍐�");

--
Gitblit v1.9.3