From df13f27e9cae2d7b112ef0dda85cba456ecef32b Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期三, 26 二月 2025 16:45:09 +0800 Subject: [PATCH] 远场和近场的数据解析的单位和指标需要重新对应+报告生成放在复核结束里面 --- inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java | 2 inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 6 + inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml | 22 +++++ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 11 ++ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 31 +++++-- inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 153 +++++++++++++++++++++----------------- inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderUserMapper.java | 4 + 7 files changed, 149 insertions(+), 80 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java index 5ea7804..21052cc 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java @@ -150,6 +150,7 @@ return Result.success(insReportService.upAll(file)); } + //鍙栨秷2.26 @ValueAuth @ApiOperation(value = "鏌ュ嚭璇ヨ鍗曚笅姣忎釜鏍峰搧涓嬫瘡涓珯鐐圭殑妫�楠屾鏁�") @GetMapping("/getInsOrderStateCount") @@ -157,6 +158,7 @@ return Result.success(insReportService.getInsOrderStateCount(id)); } + //鍙栨秷2.26 @ValueClassify("鎶ュ憡缂栧埗") @ApiOperation(value = "鍒ゆ柇鏄惁鐢熸垚鎬绘姤鍛�") @PostMapping("/isReport") diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderUserMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderUserMapper.java index 69e16fe..0a37613 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderUserMapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderUserMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.dto.InsOrderUserDto; +import com.yuanchu.mom.dto.InsReportDto1; import com.yuanchu.mom.pojo.InsOrderUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -26,4 +27,7 @@ IPage<InsOrderUserDto> selectInsOrderUserDto(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end, @Param("sonLaboratory") String sonLaboratory, Page page); IPage<InsOrderUserDto> selectInsOrderUserDto2(@Param("ids") List<Integer> ids, Page page); + + //鏍规嵁璁㈠崟id鏌ヨ鍑洪渶瑕佺敓鎴愭姤鍛婄殑鎵�鏈夋牱鍝佺殑鎵�鏈夋暟鎹� + List<InsReportDto1> selectInsReportDto1(@Param("id") Integer id); } 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 60c0617..7c62c92 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 @@ -979,7 +979,7 @@ @Override @Transactional(rollbackFor = Exception.class) - public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException { + public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) { LocalDateTime now = LocalDateTime.now(); Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); List<InsUnPass> insUnPasses = new ArrayList<>(); @@ -1069,8 +1069,9 @@ } } - insOrder.setState(4); - insOrderMapper.updateById(insOrder); + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId()); + createReport(insOrder.getId(),insReportDto1s); break; } } @@ -1079,7 +1080,7 @@ @Override @Transactional(rollbackFor = Exception.class) - public int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) throws IOException { + public int verifyPlan2(Integer sampleId, String laboratory, Integer type, String tell) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); InsSample insSample = insSampleMapper.selectById(sampleId); InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId()); @@ -1103,7 +1104,6 @@ .set(InsOrderState::getVerifyUser, userId) .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1 .set(InsOrderState::getCreateTime, LocalDateTime.now())); - insOrder.setState(1); break; case 1: //缁х画璇曢獙:璇ユ牱鍝佽绔欑偣浠诲姟缁撴潫(鍙互鍐嶆鎵爜妫�楠�)锛� @@ -1126,7 +1126,6 @@ .set(InsOrderState::getVerifyTell, tell) .set(InsOrderState::getVerifyUser, userId)); } - insOrder.setState(1); break; case 2: //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆� @@ -1155,17 +1154,31 @@ try{ outInsOrderState(laboratory, sample.getSampleCode(), insOrder.getEntrustCode()); }catch (Exception e){ - } } - insOrder.setState(4); + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + List<InsReportDto1> insReportDto1s=insOrderUserMapper.selectInsReportDto1(insOrder.getId()); + createReport(insOrder.getId(),insReportDto1s); break; } - insOrderMapper.updateById(insOrder); } return 1; } + + /*鐢熸垚瀵瑰簲鐨勬楠屾姤鍛�*/ + private void createReport(Integer orderId,List<InsReportDto1> insReportDto1s){ + for (InsReportDto1 insReportDto1 : insReportDto1s) { + if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())){ + try{ + wordUtils.generateReport(orderId, insReportDto1); + }catch (Exception e){ + throw new ErrorException("鎶ュ憡鏍煎紡鐢熸垚鏈夎,璇疯仈绯荤鐞嗗憳!"); + } + } + } + } + private void getTemplateThing (Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { for (InsProduct product : insProducts) { diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java index ca5212b..4451297 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java @@ -230,6 +230,7 @@ insReport.setState(0);//鎻愪氦鐘舵�佹敼涓哄緟鎻愪氦 return insReportMapper.updateById(insReport); } + insReportMapper.updateById(insReport); //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃 String signatureUrl; try { @@ -252,7 +253,15 @@ ProcessReport processReport = new ProcessReport(); processReport.setInsReportCode(insReport.getCode()); processReportMapper.insert(processReport); - return insReportMapper.updateById(insReport); + /*妫�楠屽崟缁撴潫*/ + List<InsReport> insReports = insReportMapper.selectList(Wrappers.<InsReport>lambdaQuery().eq(InsReport::getInsOrderId, insReport.getInsOrderId())); + List<Integer> list = insReports.stream().map(InsReport::getIsRatify).distinct().collect(Collectors.toList()); + if (list.size()==1 && list.contains(1)){ + InsOrder insOrder = insOrderMapper.selectById(insReport.getInsOrderId()); + insOrder.setState(4); + insOrderMapper.updateById(insOrder); + } + return 0; } @Override diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java index c969664..919a9ca 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java @@ -60,6 +60,7 @@ Exceldata exceldata = new Exceldata(); Map<Integer, Object> project = new HashMap<>(); HashMap<String, Object> datas1 = new HashMap<>(); + HashMap<String, Object> biaozhun = new HashMap<>(); Boolean exitLoop = false; for (int i = 0; i < workbook.getNumberOfSheets(); i++) { String s = ""; @@ -90,13 +91,39 @@ default: System.out.print("NULL\t"); } - } else { + } + else { switch (cell.getCellType()) { case STRING: if (cell.getColumnIndex() == 1) { exitLoop = true; break; } +// if (cell.getColumnIndex() == 1) { +// if (cell.getStringCellValue().equals("鎸囨爣")) { +// for (Cell cell1 : row) { +// switch (cell1.getCellType()) { +// case STRING: +// biaozhun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getStringCellValue()); +// break; +// case NUMERIC: +// System.out.print(cell1.getNumericCellValue() + "\t"); +// break; +// case BOOLEAN: +// System.out.print(cell1.getBooleanCellValue() + "\t"); +// break; +// case FORMULA: +// System.out.print(cell1.getCellFormula() + "\t"); +// break; +// default: +// System.out.print("NULL\t"); +// } +// } +// }else { +// exitLoop = true; +// } +// break; +// } if (StringUtils.isNotEmpty(s)) { datas.put(s, list); } @@ -162,7 +189,6 @@ } } System.out.println(map); - int size = map.size(); for (String s1 : map.keySet()) { String o = map.get(s1).toString(); List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList()); @@ -183,7 +209,7 @@ } } System.out.println(map); - createWord(sonLaboratory, document, exceldata, map, insOrderFile); + createWord(sonLaboratory, document, exceldata, map, biaozhun, insOrderFile); } catch (IOException e) { e.printStackTrace(); } finally { @@ -255,28 +281,9 @@ default: System.out.print("NULL\t"); } - } else if (row.getRowNum() == 1) { - - switch (cell.getCellType()) { - case STRING: - biaozhun.put(project.get(cell.getColumnIndex()).toString(), cell.getStringCellValue()); - break; - case NUMERIC: - System.out.print(cell.getNumericCellValue() + "\t"); - break; - case BOOLEAN: - System.out.print(cell.getBooleanCellValue() + "\t"); - break; - case FORMULA: - System.out.print(cell.getCellFormula() + "\t"); - break; - default: - System.out.print("NULL\t"); - } - } else if (row.getRowNum() > 2) { - + } + else if (row.getRowNum() > 2) { if (cell.getColumnIndex() == 0 && StringUtils.isNotEmpty(cell.getStringCellValue())) { - if (map2.size() != 0) { map2.put(port, list); datas1.put(jiaodu, map2); @@ -320,7 +327,28 @@ } } - } else { + } + else if (value.equals("鎸囨爣")) { + for (Cell cell1 : row) { + switch (cell1.getCellType()) { + case STRING: + biaozhun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getStringCellValue()); + break; + case NUMERIC: + System.out.print(cell1.getNumericCellValue() + "\t"); + break; + case BOOLEAN: + System.out.print(cell1.getBooleanCellValue() + "\t"); + break; + case FORMULA: + System.out.print(cell1.getCellFormula() + "\t"); + break; + default: + System.out.print("NULL\t"); + } + } + } + else { biaoji = true; } break; @@ -369,7 +397,6 @@ Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); for (String s1 : numbers.keySet()) { List<HashMap<String, Object>> hashMaps = numbers.get(s1); - List<Integer> floatList = new ArrayList<>(); for (Map<String, Object> number : hashMaps) { number.put("绔彛", s1); @@ -425,7 +452,7 @@ String[] split = insOrderFile.getFileName().split("\\."); String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "_" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"; - url=url.replace("#", "&"); + url = url.replace("#", "&"); FileOutputStream out = new FileOutputStream(wordUrl + "/" + url); document.write(out); out.close(); @@ -458,7 +485,7 @@ } //杩戝満 - public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, InsOrderFile insOrderFile) throws IOException { + public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, HashMap<String, Object> bz, InsOrderFile insOrderFile) throws IOException { int size = 1; XWPFParagraph paragraphs = document.createParagraph(); XWPFRun runs = paragraphs.createRun(); @@ -567,20 +594,26 @@ paragraph1.setAlignment(ParagraphAlignment.CENTER); XWPFRun run1 = paragraph1.createRun(); run1.setText(s2); - // 璋冪敤鏂规硶鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - String firstContent = extractFirstContentFromBrackets(s2); - if (firstContent != null) { - XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); - paragraph2.setAlignment(ParagraphAlignment.CENTER); - XWPFRun run2 = paragraph2.createRun(); - run2.setText(firstContent); + // 鍗曚綅 + XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); + XWPFRun run2 = paragraph2.createRun(); + if (s2.contains("澧炵泭")) { + run2.setText("dBi"); + } else if (s2.contains("娉㈢摚瀹藉害") || s2.contains("娉㈡潫瀹藉害") || s2.contains("涓嬪�捐")) { + run2.setText("掳"); + } else if (s2.contains("鍓嶅悗姣�") || s2.contains("浜ゅ弶鏋佸寲") || s2.contains("鏃佺摚鎶戝埗") || s2.contains("涓嬮檷") || s2.contains("闆剁偣濉厖") || s2.contains("鍓摚鐢靛钩")) { + run2.setText("dB"); + } else if (s2.contains("鏁堢巼") || s2.contains("鎵囧尯鍗犳瘮")) { + run2.setText("%"); } else { - System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�"); + run2.setText(""); } XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); paragraph3.setAlignment(ParagraphAlignment.CENTER); XWPFRun run3 = paragraph3.createRun(); - run3.setText("/"); + if (bz.get(s2) != null) { + run3.setText(bz.get(s2).toString()); + }else run3.setText(""); XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); paragraph4.setAlignment(ParagraphAlignment.CENTER); XWPFRun run4 = paragraph4.createRun(); @@ -725,8 +758,6 @@ List<String> collect = Arrays.stream(split).collect(Collectors.toList()); collect.sort((o1, o21) -> Integer.parseInt(o1.substring((o1.length() - 1))) - Integer.parseInt(o21.substring(o21.length() - 1))); - int size1 = 0; - List<Map<String, Object>> list = new ArrayList<>(); @@ -762,14 +793,6 @@ XWPFTable table = document.createTable(row, cell); table.setWidth("100%"); - - - - - /* // 鍚堝苟鍗曞厓鏍� - mergeCellsHorizontally(table, 0, 0, 7);*/ - - //鍨傜洿 mergeCellsVertically(table, 0, 0, row - 1); mergeCellsVertically(table, 1, 0, row - 1); @@ -792,22 +815,28 @@ XWPFRun run1 = paragraph1.createRun(); run1.setText(s2); - // 璋冪敤鏂规硶鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - String firstContent = extractFirstContentFromBrackets(s2); - if (firstContent != null) { - XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); - XWPFRun run2 = paragraph2.createRun(); - run2.setText(firstContent); + // 鍗曚綅 + XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); + XWPFRun run2 = paragraph2.createRun(); + if (s2.contains("澧炵泭")) { + run2.setText("dBi"); + } else if (s2.contains("娉㈢摚瀹藉害") || s2.contains("娉㈡潫瀹藉害") || s2.contains("涓嬪�捐")) { + run2.setText("掳"); + } else if (s2.contains("鍓嶅悗姣�") || s2.contains("浜ゅ弶鏋佸寲") || s2.contains("鏃佺摚鎶戝埗") || s2.contains("涓嬮檷") || s2.contains("闆剁偣濉厖") || s2.contains("鍓摚鐢靛钩")) { + run2.setText("dB"); + } else if (s2.contains("鏁堢巼") || s2.contains("鎵囧尯鍗犳瘮")) { + run2.setText("%"); } else { - System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�"); + run2.setText(""); } XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); + paragraph3.setAlignment(ParagraphAlignment.CENTER); XWPFRun run3 = paragraph3.createRun(); if (bz.get(s2) != null) { run3.setText(bz.get(s2).toString()); - } + }else run3.setText(""); XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); @@ -815,6 +844,7 @@ run4.setText("棰戠巼锛圡Hz锛�"); XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0); + paragraph5.setAlignment(ParagraphAlignment.CENTER); XWPFRun run5 = paragraph5.createRun(); run5.setText("绔彛"); @@ -911,18 +941,5 @@ } } - // 鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� - public static String extractFirstContentFromBrackets(String str) { - // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鍖归厤鎷彿鍐呯殑鍐呭锛屽悓鏃舵敮鎸佷腑鏂囧拰鑻辨枃鎷彿 - Pattern pattern = Pattern.compile("\\锛�(.*?)\\锛墊\\((.*?)\\)"); - Matcher matcher = pattern.matcher(str); - - // 鏌ユ壘绗竴涓尮閰嶇殑鍐呭 - if (matcher.find()) { - // 鑾峰彇鎷彿鍐呯殑鍐呭锛屽垽鏂槸涓枃鎷彿杩樻槸鑻辨枃鎷彿 - return matcher.group(1) != null ? matcher.group(1) : matcher.group(2); - } - return null; // 濡傛灉娌℃湁鎵惧埌鍖归厤椤癸紝鍒欒繑鍥瀗ull - } } 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 c8b7080..5f1dd3c 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 @@ -2611,7 +2611,8 @@ Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getInsSampleId, s.getId()) .eq(InsProduct::getInsResult, 3)); - productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); +// productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); + productSize1.set(productSize1.get() + Integer.parseInt(0 + "")); //涓嶅悎鏍� Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getInsSampleId, s.getId()) @@ -2621,7 +2622,8 @@ Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() .eq(InsProduct::getInsSampleId, s.getId()) .eq(InsProduct::getInsResult, 1)); - productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); +// productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); + productSize3.set(productSize3.get() + Integer.parseInt(productCount3+productCount1 + "")); //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫� Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getSonLaboratory)); // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯� diff --git a/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml index 36d1385..85237a3 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderUserMapper.xml @@ -46,4 +46,26 @@ #{id} </foreach> </select> + + + <resultMap id="InsReportDto1Map" type="com.yuanchu.mom.dto.InsReportDto1"> + <id property="sampleId" column="sampleId" jdbcType="INTEGER"/> + <collection property="insReportDto2s" resultMap="insReportDto2s"/> + </resultMap> + <resultMap id="insReportDto2s" type="com.yuanchu.mom.dto.InsReportDto2"> + <result column="laboratory" property="laboratory"/> + <result column="num" property="num"/> + <result column="insOrderUsersId" property="insOrderUsersId"/> + </resultMap> + <select id="selectInsReportDto1" resultMap="InsReportDto1Map"> + select isa.id sampleId, + ios.laboratory , + iou.num, + iou.id insOrderUsersId + from ins_sample isa + left join ins_order_state ios on isa.id = ios.ins_sample_id + left join ins_order_user iou on ios.id = iou.ins_order_state_id + where isa.ins_order_id=#{id} + order by isa.id,ios.laboratory + </select> </mapper> -- Gitblit v1.9.3