From 17cbd5b9f612f3d29f02f2722357ea334ede2b41 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 31 七月 2025 19:17:43 +0800
Subject: [PATCH] 提交再次试验需要将检验项目的结论重置为null
---
inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java | 517 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 485 insertions(+), 32 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 2f2c23d..dbc463b 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,18 +7,29 @@
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.regex.Matcher;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Component
@@ -31,46 +42,53 @@
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())));
//鏍规嵁棰戠偣鍒嗙被
- 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 +102,425 @@
//娆℃暟
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 (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;
+ }
+ }
}
- insProductResult2Mapper.insert(insProductResult2);
+ if (ObjectUtils.isEmpty(insProductResult2.getFrequency())) {
+ throw new ErrorException("娌℃湁鎵惧埌" + stringListEntry.getKey() + "瀵瑰簲鐨勯娈典俊鎭�,璇峰厛閫夋嫨棰戞淇℃伅杩涜淇濆瓨");
+ }
+ 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());
+ //鏌ヨ璇ユ牱鍝佺殑闅旂搴﹂」鐩甶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
+ 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) {
+ continue;
+ }
+ 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 (products6.size() <= 0) {
+ continue;
+ }
+ 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) {
+ continue;
+ }
+ 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) {
+ continue;
+ }
+ 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) {
+ continue;
+ }
+ 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) {
+ continue;
+ }
+ 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) {
+ continue;
+ }
+ 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(",")));
+ result2.setNum(orderStates.get(0).getNum());
+ filteredList.add(result2);
+ }
+ }
+ 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) {
+ continue;
+ }
+ insProductResult2.setInsProductId(products1.get(0).getId());//鐢靛帇椹绘尝姣�
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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) {
+ continue;
+ }
+ insProductResult2.setInsProductId(products2.get(0).getId());//鏃犳簮鍣ㄤ欢闅旂搴�
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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) {
+ continue;
+ }
+ insProductResult2.setInsProductId(products3.get(0).getId());//鎻掑叆鎹熻��
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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) {
+ continue;
+ }
+ insProductResult2.setInsProductId(products4.get(0).getId());//甯﹀唴娉㈠姩
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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) {
+ continue;
+ }
+ insProductResult2.setInsProductId(products5.get(0).getId());//甯﹀鎶戝埗
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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) {
+ continue;
+ }
+ /*鏈�澶ц�﹀悎搴�*/
+ insProductResult2.setFrequency(listEntry.getKey());//棰戞
+ 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 insProductResult22 = new InsProductResult2();
+ insProductResult22.setFrequency(listEntry.getKey());//棰戞
+ insProductResult22.setNum(orderStates.get(0).getNum());//娆℃暟
+ //鑾峰彇绔彛
+ insProductResult22.setPort(port);//绔彛
+ insProductResult22.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(","));
+ insProductResult22.setValue("[[" + value1 + "]]");//鍊�
+ insProductResult2s.add(insProductResult22);
+ }
+ }
+ }
+
+ 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.setOften(entry.getValue().stream().map(InsProductResult2::getOften).collect(Collectors.joining(",")));
+ result2.setNum(orderStates.get(0).getNum());
+ filteredList.add(result2);
+ }
+ }
+ insProductResult2Service.saveBatch(filteredList);
}
- public static List<HuTiaoData> readExcelData(String filePath) {
+ public static List<HuTiaoData> readExcelData1(String filePath) {
List<HuTiaoData> dataList = new ArrayList<>();
// 鍒濆鍖栫洃鍚櫒
@@ -115,21 +543,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;
}
+
}
--
Gitblit v1.9.3