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