From 476740c4330135b38be6a32f54dbe1bbcd32476a Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期一, 13 一月 2025 13:20:56 +0800 Subject: [PATCH] Merge branch 'master' into cnas --- inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 512 +++++++++++++++++++++++++++++++++++ inspect-server/src/main/java/com/yuanchu/mom/controller/InsProductTemplateController.java | 4 inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResult2VO.java | 29 ++ inspect-server/src/main/java/com/yuanchu/mom/utils/DianLuUtils.java | 176 ++++++++++++ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 21 + inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml | 19 + inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java | 2 inspect-server/src/main/java/com/yuanchu/mom/service/InsProductTemplateService.java | 4 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductTemplateServiceImpl.java | 16 + inspect-server/src/main/resources/static/word2.docx | 0 10 files changed, 762 insertions(+), 21 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsProductTemplateController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsProductTemplateController.java index 2d9d096..f00ff41 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsProductTemplateController.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsProductTemplateController.java @@ -42,8 +42,8 @@ @ValueAuth @ApiOperation(value = "閫夋嫨鐢佃矾璇曢獙妫�楠屾ā鐗�") @PostMapping("/chooseInsProductTemplate") - public Result chooseInsProductTemplate() { - return Result.success(insProductTemplateService.list()); + public Result chooseInsProductTemplate(String version) { + return Result.success(insProductTemplateService.chooseInsProductTemplate(version)); } @ValueAuth diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java index dcd9a6b..59c3fcc 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductResult2Mapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yuanchu.mom.pojo.InsProductResult; import com.yuanchu.mom.pojo.InsProductResult2; +import com.yuanchu.mom.vo.InsProductResult2VO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -16,6 +17,7 @@ public interface InsProductResult2Mapper extends BaseMapper<InsProductResult2> { void saveBatch(@Param("result2s") List<InsProductResult2> result2s); + List<InsProductResult2VO> selectWordHang(@Param("num") Integer num, @Param("ids") List<Integer> ids); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductTemplateService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductTemplateService.java index 0ece08d..0e05909 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductTemplateService.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsProductTemplateService.java @@ -3,6 +3,8 @@ import com.yuanchu.mom.pojo.InsProductTemplate; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * <p> * 鐢ㄤ簬鐢佃矾璇曢獙鐨勬ā鐗� 鏈嶅姟绫� @@ -13,4 +15,6 @@ */ public interface InsProductTemplateService extends IService<InsProductTemplate> { + List<InsProductTemplate> chooseInsProductTemplate(String version); + } 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 dd80cec..3a32619 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 @@ -311,6 +311,7 @@ @Override public Object uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) { + InsOrder insOrder = insOrderMapper.selectById(orderId); String urlString; String pathName; String path; @@ -353,6 +354,8 @@ dianLuUtils.readDianLuFile1(sampleId, insOrderFile); } else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && filename.contains("椹绘尝")) { dianLuUtils.readDianLuFile2(sampleId, insOrderFile); + }else if (ObjectUtils.isNotEmpty(sonLaboratory) && sonLaboratory.equals("鐢佃矾璇曢獙") && split[split.length - 1].equals("csv") && insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { + dianLuUtils.readDianLuFile3(sampleId, insOrderFile); } } catch (Exception e) { throw new ErrorException(e.getMessage()); @@ -1189,13 +1192,21 @@ insSampleUserMapper.insert(insSampleUser); /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ if (submitPlanDto.getLaboratory().equals("鐢佃矾璇曢獙")) { -// wordUtils.generateWord(submitPlanDto.getTerm(), orderState); - //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮� - try { + if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { wordUtils.generateWord(submitPlanDto.getTerm(), orderState); - } catch (Exception e) { - throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); + }else { + wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); } + //todo 鐢佃矾绔欑偣鎶ュ憡 姝e紡搴撻儴缃叉斁寮� +// try { +// if (!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")) { +// wordUtils.generateWord(submitPlanDto.getTerm(), orderState); +// }else { +// wordUtils.generateWord2(submitPlanDto.getTerm(), orderState); +// } +// } catch (Exception e) { +// throw new ErrorException("鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婄敓鎴愭湁璇�,璇疯仈绯诲紑鍙戜汉鍛樿皟鏁�!"); +// } } /*鐢熸垚浜ч噺宸ユ椂*/ //鏍¢獙濡傛灉杩欎釜浜鸿繖涓娴嬮」鐩凡缁忔坊鍔犺繃浜嗗垯涓嶉渶瑕佸啀鏂板 diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductTemplateServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductTemplateServiceImpl.java index 9034442..bb9d63f 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductTemplateServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsProductTemplateServiceImpl.java @@ -1,10 +1,15 @@ package com.yuanchu.mom.service.impl; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.yuanchu.mom.pojo.InsProductTemplate; import com.yuanchu.mom.mapper.InsProductTemplateMapper; import com.yuanchu.mom.service.InsProductTemplateService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; /** * <p> @@ -17,4 +22,15 @@ @Service public class InsProductTemplateServiceImpl extends ServiceImpl<InsProductTemplateMapper, InsProductTemplate> implements InsProductTemplateService { + @Resource + private InsProductTemplateMapper insProductTemplateMapper; + + @Override + public List<InsProductTemplate> chooseInsProductTemplate(String version) { + if (ObjectUtils.isNotEmpty(version) && version.equals("2")){ + return insProductTemplateMapper.selectList(Wrappers.<InsProductTemplate>lambdaQuery().eq(InsProductTemplate::getVersion,2)); + }else { + return insProductTemplateMapper.selectList(Wrappers.<InsProductTemplate>lambdaQuery().ne(InsProductTemplate::getVersion,2)); + } + } } 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 387ec5e..35d5e7f 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())); @@ -176,7 +177,7 @@ if (products6.size() <= 0) { throw new ErrorException("闅旂搴﹂」鐩湭鎵惧埌"); } - insProductResult2.setInsProductId(products6.get(0).getId());//鍚屾瀬鍖栭殧绂� + insProductResult2.setInsProductId(products6.get(0).getId());//鍚屽垪闅旂 insProductResult2.setFrequency(listEntry.getKey());//棰戞 insProductResult2.setAngle("0掳");//瑙掑害 insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟 @@ -191,7 +192,7 @@ if (products7.size() <= 0) { throw new ErrorException("绔彛闂撮殧绂婚」鐩湭鎵惧埌"); } - insProductResult2.setInsProductId(products7.get(0).getId());//鍚屾瀬鍖栭殧绂� + insProductResult2.setInsProductId(products7.get(0).getId());//绔彛闂撮殧绂� insProductResult2.setFrequency(listEntry.getKey());//棰戞 insProductResult2.setAngle("0掳");//瑙掑害 insProductResult2.setNum(orderStates.get(0).getNum());//娆℃暟 @@ -339,6 +340,175 @@ 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) { + throw new ErrorException("鐢靛帇椹绘尝姣旈」鐩湭鎵惧埌"); + } + 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) { + throw new ErrorException("闅旂搴﹂」鐩湭鎵惧埌"); + } + 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) { + throw new ErrorException("鎻掑叆鎹熻�楅」鐩湭鎵惧埌"); + } + 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) { + throw new ErrorException("甯﹀唴娉㈠姩椤圭洰鏈壘鍒�"); + } + 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) { + throw new ErrorException("甯﹀鎶戝埗椤圭洰鏈壘鍒�"); + } + 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) { + throw new ErrorException("鑰﹀悎搴﹂」鐩湭鎵惧埌"); + } + /*鏈�澶ц�﹀悎搴�*/ + 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); } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java index 1ce8337..e698902 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -18,6 +18,7 @@ import com.yuanchu.mom.exception.ErrorException; import com.yuanchu.mom.mapper.*; import com.yuanchu.mom.pojo.*; +import com.yuanchu.mom.vo.InsProductResult2VO; import org.apache.commons.io.IOUtils; import org.apache.poi.openxml4j.util.ZipSecureFile; import org.apache.poi.xwpf.usermodel.*; @@ -25,6 +26,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -94,7 +96,7 @@ GiveCode giveCode; - //鐢熸垚绔欑偣鐢佃矾璇曢獙鎶ュ憡 + //鐢熸垚绔欑偣鐢佃矾璇曢獙鎶ュ憡(澶╃嚎) public void generateWord(String term, InsOrderState insOrderState) { AtomicInteger lable = new AtomicInteger(1); AtomicInteger index = new AtomicInteger(); @@ -2050,6 +2052,303 @@ insOrderFileMapper.insert(insOrderFile); } + //鐢熸垚绔欑偣鐢佃矾璇曢獙鎶ュ憡(鏃犳簮鍣ㄤ欢) + public void generateWord2(String term, InsOrderState insOrderState) { + AtomicInteger index = new AtomicInteger(); + String title = term + "鐢佃矾鍙傛暟"; + List<Map<String, Object>> tables = new ArrayList<>(); + //鏌ヨ璁㈠崟 + InsOrder insOrder = insOrderMapper.selectById(insOrderState.getInsOrderId()); + //鏌ヨ鏍峰搧 + InsSample insSample = insSampleMapper.selectById(insOrderState.getInsSampleId()); + //鏌ヨ椤圭洰 + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState,1) + .eq(InsProduct::getInsSampleId, insSample.getId()) + .eq(InsProduct::getSonLaboratory, "鐢佃矾璇曢獙")); + //璁$畻琛屾暟 + List<InsProductResult2VO> result2VOS = new ArrayList<>(); + List<InsProductResult2VO> insProductResult2VOS = insProductResult2Mapper.selectWordHang(insOrderState.getNum(), insProducts.stream().map(InsProduct::getId).collect(Collectors.toList())); + for (InsProductResult2VO insProductResult2VO : insProductResult2VOS) { + String[] split = insProductResult2VO.getPort().split(","); + String value = insProductResult2VO.getValue().replace("[[", "").replace("]]", ""); + if (split.length>1){ + for (int i = 0; i < split.length; i++) { + InsProductResult2VO insProductResult2VO1 = new InsProductResult2VO(); + BeanUtils.copyProperties(insProductResult2VO,insProductResult2VO1); + //绔彛 + insProductResult2VO1.setPort(split[i]); + //鍊� + try{ + insProductResult2VO1.setValue(value.split(",")[i].replace("\"","")); + }catch (Exception e){ + insProductResult2VO1.setValue(""); + } + result2VOS.add(insProductResult2VO1); + } + } + else { + insProductResult2VO.setValue(value.replace("\"","")); + result2VOS.add(insProductResult2VO); + } + } + List<RowRenderData> rows = new ArrayList<>(); + Set<String> itemSet = new HashSet<>(); + //琛ㄦ牸鐨勮鏁� + for (int i = 0; i < result2VOS.size(); i++) { + RowRenderData rowRenderData = new RowRenderData(); + RowStyle rowStyle = new RowStyle(); + rowStyle.setHeight(40); + rowRenderData.setRowStyle(rowStyle); + List<CellRenderData> cells = new ArrayList<>(); + //琛ㄦ牸鐨勫垪鏁� + for (int j = 0; j < 8; j++) { + CellRenderData cellRenderData = new CellRenderData(); + CellStyle cellStyle = new CellStyle(); + cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); + cellRenderData.setCellStyle(cellStyle); + List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); + ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); + ParagraphStyle paragraphStyle = new ParagraphStyle(); + paragraphStyle.setAlign(ParagraphAlignment.CENTER); + paragraphRenderData.setParagraphStyle(paragraphStyle); + List<RenderData> renderData = new ArrayList<>(); + TextRenderData textRenderData = new TextRenderData(); + Style style = new Style(); + style.setFontFamily("瀹嬩綋"); + style.setColor("000000"); + textRenderData.setStyle(style); + if (j==0){ + //绗竴鍒�(搴忓彿) + if (itemSet.add(result2VOS.get(i).getInspectionItemSubclass())) { + index.getAndIncrement(); + } + textRenderData.setText(index + "鈭�1" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1){ + //绗簩鍒�(妫�楠岄」鐩�) + textRenderData.setText(result2VOS.get(i).getInspectionItemSubclass()+ "鈭�2" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2){ + //绗笁鍒�(鍗曚綅) + textRenderData.setText(result2VOS.get(i).getUnit()+ "鈭�3" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==3){ + //绗洓鍒�(鏍囧噯涓庤姹�) + textRenderData.setText(result2VOS.get(i).getAsk()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==4){ + //绗簲鍒�(绔彛) + try{ + textRenderData.setText(result2VOS.get(i).getPort()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==5){ + //绗叚鍒�(棰戞) + try{ + textRenderData.setText(result2VOS.get(i).getFrequency()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==6){ + //绗竷鍒�(妫�楠屽��) + try{ + textRenderData.setText(result2VOS.get(i).getValue()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + //鏈�鍚庝竴鍒�(缁撹) + try{ + if (result2VOS.get(i).getResult().equals("1")) { + textRenderData.setText("鍚堟牸"); + }else if (result2VOS.get(i).getResult().equals("0")){ + textRenderData.setText("涓嶅悎鏍�"); + }else { + textRenderData.setText("涓嶅垽瀹�"); + } + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + rowRenderData.setCells(cells); + if (rowRenderData.getCells().size() != 0) { + rows.add(rowRenderData); + } + } + TableRenderData tableRenderData = new TableRenderData(); + tableRenderData.setRows(rows); + int countSize = tableRenderData.getRows().get(0).getCells().size(); + for (RowRenderData row : tableRenderData.getRows()) { + if (row.getCells().size() != countSize) { + throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑"); + } + } + TableStyle tableStyle = new TableStyle(); + tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); + tableStyle.setAlign(TableRowAlign.CENTER); + BorderStyle borderStyle = new BorderStyle(); + borderStyle.setColor("000000"); + borderStyle.setType(XWPFTable.XWPFBorderType.THICK); + borderStyle.setSize(4); + tableStyle.setLeftBorder(borderStyle); + tableStyle.setTopBorder(borderStyle); + tableStyle.setRightBorder(borderStyle); + tableStyle.setBottomBorder(borderStyle); + tableRenderData.setTableStyle(tableStyle); + Map<String, Object> table = new HashMap<>(); + table.put("table", tableRenderData); + tables.add(table); + + ZipSecureFile.setMinInflateRatio(0.0001); + InputStream inputStream = this.getClass().getResourceAsStream("/static/word2.docx"); + + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render( + new HashMap<String, Object>() {{ + put("title", title); + put("tables", tables); + }}); + String name = insOrder.getEntrustCode().replace("/", "") + "-" +insSample.getSampleCode()+"-"+ title + ".docx"; + String url = UUID.randomUUID() + "_" + name; + try { + template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + url))); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 + String path = wordUrl + "/" + url; + try { + ZipSecureFile.setMinInflateRatio(0.0001); + FileInputStream stream = new FileInputStream(path); + XWPFDocument document = new XWPFDocument(stream); + List<XWPFTable> xwpfTables = document.getTables(); + for (int i = 0; i < xwpfTables.size(); i++) { + Set<String> set1 = new HashSet<>(); + Map<String, Map<String, Integer>> maps = new HashMap<>(); + for (int j = 0; j < xwpfTables.get(i).getRows().size(); j++) { + for (int k = 0; k < xwpfTables.get(i).getRows().get(j).getTableCells().size(); k++) { + if (xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().indexOf("鈭�") > -1) { + String[] split = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�"); + if (set1.add(split[1])) { + Map<String, Integer> map = new HashMap<>(); + map.put("sr", j); + map.put("sc", k); + map.put("er", j + 0); + map.put("ec", k + 0); + maps.put(split[1], map); + } else { + Map<String, Integer> map1 = maps.get(split[1]); + if (j == map1.get("sr")) { + map1.put("ec", map1.get("ec") + 1); + } else if (k == map1.get("sc")) { + map1.put("er", map1.get("er") + 1); + } + } + String str = xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getText().split("鈭�")[0]; + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setText(str); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); + xwpfTables.get(i).getRows().get(j).getTableCells().get(k).getParagraphArray(0).setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER); + } + } + } + + // 鍗曞厓鏍兼帓搴�, 閬垮厤鏍煎紡閿欎贡 + List<Map.Entry<String, Map<String, Integer>>> entries = new ArrayList<>(maps.entrySet()); + entries.sort((o1, o2) -> o1.getValue().get("sc") - o2.getValue().get("sc")); + + // 鎸夌収椤哄簭娣诲姞杩涢泦鍚� + List<String> list = new ArrayList<>(); + for (Map.Entry<String, Map<String, Integer>> entry : entries) { + list.add(entry.getKey()); + } + /*List<String> list = new ArrayList<>(); + for (String s : maps.keySet()) { + list.add(s); + }*/ + for (int a = list.size() - 1; a >= 0; a--) { + Map<String, Integer> v = maps.get(list.get(a)); + for (int j = 0; j < v.get("er") - v.get("sr") + 1; j++) { + if (v.get("ec") > v.get("sc")) { + try { + TableTools.mergeCellsHorizonal(xwpfTables.get(i), v.get("sr") + j, v.get("sc"), v.get("ec")); + } catch (Exception e) { + } + } + } + if (v.get("er") > v.get("sr")) { + try { + TableTools.mergeCellsVertically(xwpfTables.get(i), v.get("sc"), v.get("sr"), v.get("er")); + } catch (Exception e) { + } + } + } + } + FileOutputStream fileOutputStream = new FileOutputStream(path); + document.write(fileOutputStream); + fileOutputStream.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + InsOrderFile insOrderFile = new InsOrderFile(); + insOrderFile.setInsOrderId(insOrderState.getInsOrderId()); + insOrderFile.setInsSampleId(insOrderState.getInsSampleId()); + insOrderFile.setFileName(name); + insOrderFile.setType(2); + insOrderFile.setFileUrl(url); + insOrderFile.setSonLaboratory("鐢佃矾璇曢獙"); + insOrderFileMapper.insert(insOrderFile); + } + //鐢熸垚鎬绘姤鍛� public void generateReport(Integer orderId, InsReportDto1 insReportDto1) { LocalDateTime now = LocalDateTime.now(); @@ -2421,7 +2720,11 @@ InsOrderState orderState = insOrderStateMapper.selectById(insOrderUser.getInsOrderStateId()); if (orderState.getLaboratory().equals("鐢佃矾璇曢獙")) { orderState.setNum(insOrderUser.getNum()); - getWord1(insOrderUser.getTerm(), orderState, tables2); + if(!insOrder.getSampleType().equals("鏃犳簮鍣ㄤ欢")){ + getWord1(insOrderUser.getTerm(), orderState, tables2); + }else { + getWord2(insOrderUser.getTerm(), orderState, tables2); + } } } } @@ -2783,25 +3086,24 @@ } - //鐢佃矾鎶ュ憡鐢ㄤ簬鎬绘姤鍛婄殑鏂规硶 + //鐢佃矾鎶ュ憡鐢ㄤ簬鎬绘姤鍛婄殑鏂规硶(澶╃嚎) private void getWord1(String term, InsOrderState insOrderState,List<Map<String, Object>> tables2) { AtomicInteger lable = new AtomicInteger(1); AtomicInteger index = new AtomicInteger(); String title = term + "鐢佃矾鍙傛暟"; InsSample insSample = insSampleMapper.selectById(insOrderState.getInsSampleId()); - - //鏌ヨ椤圭洰 - List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + //鏌ヨ椤圭洰 + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getState,1) .eq(InsProduct::getInsSampleId, insSample.getId()) .eq(InsProduct::getSonLaboratory, "鐢佃矾璇曢獙")); - //鑾峰彇鏈�澶х鍙f暟閲�,瑙掑害鏁伴噺,棰戞鏁伴噺 - List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() + //鑾峰彇鏈�澶х鍙f暟閲�,瑙掑害鏁伴噺,棰戞鏁伴噺 + List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() .eq(InsProductResult2::getNum, insOrderState.getNum()) .in(InsProductResult2::getInsProductId, insProducts.stream().map(InsProduct::getId).collect(Collectors.toList()))); - //鎸夌収棰戞鍒嗚〃(鏌ヨ鎵�鏈夐娈�) - List<String> frequencys = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList()); - frequencys.forEach(s -> { + //鎸夌収棰戞鍒嗚〃(鏌ヨ鎵�鏈夐娈�) + List<String> frequencys = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList()); + frequencys.forEach(s -> { int ports = 0;//绔彛鏁� int angles = 0;//瑙掑害鏁� List<InsProductResult2> productResult2s = insProductResult2s.stream().filter(insProductResult2 -> insProductResult2.getFrequency().equals(s)).collect(Collectors.toList()); @@ -4636,6 +4938,194 @@ }); } + //鐢佃矾鎶ュ憡鐢ㄤ簬鎬绘姤鍛婄殑鏂规硶(鏃犳簮鍣ㄤ欢) + private void getWord2(String term, InsOrderState insOrderState,List<Map<String, Object>> tables2){ + AtomicInteger index = new AtomicInteger(); + String title = term + "鐢佃矾鍙傛暟"; + //鏌ヨ鏍峰搧 + InsSample insSample = insSampleMapper.selectById(insOrderState.getInsSampleId()); + //鏌ヨ椤圭洰 + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState,1) + .eq(InsProduct::getInsSampleId, insSample.getId()) + .eq(InsProduct::getSonLaboratory, "鐢佃矾璇曢獙")); + //璁$畻琛屾暟 + List<InsProductResult2VO> result2VOS = new ArrayList<>(); + List<InsProductResult2VO> insProductResult2VOS = insProductResult2Mapper.selectWordHang(insOrderState.getNum(), insProducts.stream().map(InsProduct::getId).collect(Collectors.toList())); + for (InsProductResult2VO insProductResult2VO : insProductResult2VOS) { + String[] split = insProductResult2VO.getPort().split(","); + String value = insProductResult2VO.getValue().replace("[[", "").replace("]]", ""); + if (split.length>1){ + for (int i = 0; i < split.length; i++) { + InsProductResult2VO insProductResult2VO1 = new InsProductResult2VO(); + BeanUtils.copyProperties(insProductResult2VO,insProductResult2VO1); + //绔彛 + insProductResult2VO1.setPort(split[i]); + //鍊� + insProductResult2VO1.setValue(value.split(",")[i].replace("\"","")); + result2VOS.add(insProductResult2VO1); + } + } + else { + insProductResult2VO.setValue(value.replace("\"","")); + result2VOS.add(insProductResult2VO); + } + } + List<RowRenderData> rows = new ArrayList<>(); + Set<String> itemSet = new HashSet<>(); + //琛ㄦ牸鐨勮鏁� + for (int i = 0; i < result2VOS.size(); i++) { + RowRenderData rowRenderData = new RowRenderData(); + RowStyle rowStyle = new RowStyle(); + rowStyle.setHeight(40); + rowRenderData.setRowStyle(rowStyle); + List<CellRenderData> cells = new ArrayList<>(); + //琛ㄦ牸鐨勫垪鏁� + for (int j = 0; j < 8; j++) { + CellRenderData cellRenderData = new CellRenderData(); + CellStyle cellStyle = new CellStyle(); + cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER); + cellRenderData.setCellStyle(cellStyle); + List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>(); + ParagraphRenderData paragraphRenderData = new ParagraphRenderData(); + ParagraphStyle paragraphStyle = new ParagraphStyle(); + paragraphStyle.setAlign(ParagraphAlignment.CENTER); + paragraphRenderData.setParagraphStyle(paragraphStyle); + List<RenderData> renderData = new ArrayList<>(); + TextRenderData textRenderData = new TextRenderData(); + Style style = new Style(); + style.setFontFamily("瀹嬩綋"); + style.setColor("000000"); + textRenderData.setStyle(style); + if (j==0){ + //绗竴鍒�(搴忓彿) + if (itemSet.add(result2VOS.get(i).getInspectionItemSubclass())) { + index.getAndIncrement(); + } + textRenderData.setText(index + "鈭�1" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==1){ + //绗簩鍒�(妫�楠岄」鐩�) + textRenderData.setText(result2VOS.get(i).getInspectionItemSubclass()+ "鈭�2" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==2){ + //绗笁鍒�(鍗曚綅) + textRenderData.setText(result2VOS.get(i).getUnit()+ "鈭�3" + index); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==3){ + //绗洓鍒�(鏍囧噯涓庤姹�) + textRenderData.setText(result2VOS.get(i).getAsk()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==4){ + //绗簲鍒�(绔彛) + try{ + textRenderData.setText(result2VOS.get(i).getPort()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==5){ + //绗叚鍒�(棰戞) + try{ + textRenderData.setText(result2VOS.get(i).getFrequency()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else if (j==6){ + //绗竷鍒�(妫�楠屽��) + try{ + textRenderData.setText(result2VOS.get(i).getValue()); + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + else { + //鏈�鍚庝竴鍒�(缁撹) + try{ + if (result2VOS.get(i).getResult().equals("1")) { + textRenderData.setText("鍚堟牸"); + }else if (result2VOS.get(i).getResult().equals("0")){ + textRenderData.setText("涓嶅悎鏍�"); + }else { + textRenderData.setText("涓嶅垽瀹�"); + } + }catch (Exception e){ + textRenderData.setText(""); + } + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + rowRenderData.setCells(cells); + if (rowRenderData.getCells().size() != 0) { + rows.add(rowRenderData); + } + } + TableRenderData tableRenderData = new TableRenderData(); + tableRenderData.setRows(rows); + int countSize = tableRenderData.getRows().get(0).getCells().size(); + for (RowRenderData row : tableRenderData.getRows()) { + if (row.getCells().size() != countSize) { + throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑"); + } + } + TableStyle tableStyle = new TableStyle(); + tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); + tableStyle.setAlign(TableRowAlign.CENTER); + BorderStyle borderStyle = new BorderStyle(); + borderStyle.setColor("000000"); + borderStyle.setType(XWPFTable.XWPFBorderType.THICK); + borderStyle.setSize(4); + tableStyle.setLeftBorder(borderStyle); + tableStyle.setTopBorder(borderStyle); + tableStyle.setRightBorder(borderStyle); + tableStyle.setBottomBorder(borderStyle); + tableRenderData.setTableStyle(tableStyle); + Map<String, Object> table2 = new HashMap<>(); + table2.put("table2", tableRenderData); + table2.put("title", title); + tables2.add(table2); + } + // 姘村钩鍚堝苟鍗曞厓鏍� private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) { for (int i = fromCol; i <= toCol; i++) { diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResult2VO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResult2VO.java new file mode 100644 index 0000000..07ab956 --- /dev/null +++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResult2VO.java @@ -0,0 +1,29 @@ +package com.yuanchu.mom.vo; + +import lombok.Data; + +//鏃犳簮鍣ㄤ欢鐨勭數璺瘯楠岀敓鎴愭姤鍛婃墍鐢� +@Data +public class InsProductResult2VO { + + //妫�楠岄」鐩� + private String inspectionItemSubclass; + + //鍗曚綅 + private String unit; + + //鏍囧噯瑕佹眰 + private String ask; + + //绔彛 + private String port; + + //棰戞 + private String frequency; + + //妫�楠屽�� + private String value; + + //缁撹 + private String result; +} diff --git a/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml b/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml index 883e299..de4be72 100644 --- a/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml +++ b/inspect-server/src/main/resources/mapper/InsProductResult2Mapper.xml @@ -35,4 +35,23 @@ #{result2.num}) </foreach> </insert> + <select id="selectWordHang" resultType="com.yuanchu.mom.vo.InsProductResult2VO"> + select + inspection_item_subclass, + unit, + ask, + result, + frequency, + port, + value, + result + from ins_product_result_2 ipr2 + left join ins_product ip on ipr2.ins_product_id = ip.id + where num=#{num} + and ip.id in + <foreach collection="ids" separator="," item="id" open="(" close=")" > + #{id} + </foreach> + order by inspection_item_subclass + </select> </mapper> diff --git a/inspect-server/src/main/resources/static/word2.docx b/inspect-server/src/main/resources/static/word2.docx new file mode 100644 index 0000000..0ee5b6e --- /dev/null +++ b/inspect-server/src/main/resources/static/word2.docx Binary files differ -- Gitblit v1.9.3