From 22d3a8dc4185c5461bee9e42a9f4a2775ff448e6 Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期二, 10 九月 2024 17:28:17 +0800 Subject: [PATCH] 报告更改+再次试验 --- inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java | 10 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java | 5 inspect-server/src/main/resources/mapper/InsSampleMapper.xml | 713 ++++++++++++++++----- user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java | 2 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 458 +++++++++++++ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 700 +------------------- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 19 user-server/src/main/resources/mapper/UserMapper.xml | 4 framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java | 2 inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java | 3 inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java | 7 inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java | 3 inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java | 1 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java | 9 inspect-server/src/main/resources/static/report-template.docx | 0 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java | 19 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java | 5 user-server/src/main/java/com/yuanchu/mom/service/impl/UserServiceImp.java | 1 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java | 4 inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java | 3 20 files changed, 1,115 insertions(+), 853 deletions(-) diff --git a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java index 54eaa1d..cc724a9 100644 --- a/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java +++ b/framework/src/main/java/com/yuanchu/mom/utils/GiveCode.java @@ -33,7 +33,7 @@ String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); String date2 = LocalDate.now().format(DateTimeFormatter.ofPattern(patten)); int num; - num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM"))) + 1; + num = systemLogMapper.countRowsByNow3(tableName, companyId, laboratory, LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) + 1; String nums = num + ""; if (nums.length() == 1) nums = "00" + num; else if (nums.length() == 2) nums = "0" + num; 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 163e9c3..7dde23f 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 @@ -138,9 +138,9 @@ @ApiOperation(value = "淇濆瓨妫�楠屽唴瀹�") @PostMapping("/saveInsContext") @ValueAuth - public Result<?> saveInsContext(String param) { + public Result<?> saveInsContext(String param,Integer num) { Map<String, Object> param2 = JSON.parseObject(param, Map.class); - insOrderPlanService.saveInsContext(param2); + insOrderPlanService.saveInsContext(param2,num); return Result.success(); } @@ -215,13 +215,6 @@ return Result.success(insOrderPlanService.deleteInsContext(insProductResultVo)); } - @ApiOperation(value = "鐢佃矾璇曢獙鐨勫垹闄や簰璋�") - @PostMapping("/deleteInsContext2") - @ValueAuth - public Result<?> deleteInsContext2(String frequency,Integer productId,String often) { - return Result.success(insOrderPlanService.deleteInsContext2(frequency,productId,often)); - } - @ApiOperation(value = "鐢佃矾璇曢獙鐐瑰嚮妫�楠岄�夋嫨鐗堟湰") @PostMapping("/chooseVersion") @ValueAuth @@ -231,4 +224,12 @@ orderState.setVersion(version); return Result.success(insOrderStateService.updateById(orderState)); } + + @ValueClassify("妫�楠屼换鍔�") + @PostMapping("/getInsProduct2") + @ApiOperation("鏌ョ湅妫�楠屽巻鍙�") + public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) { + return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request,num)); + } + } 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 ccfdb62..8a05af5 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 @@ -148,4 +148,11 @@ public Result upAll(MultipartFile file) throws IOException { return Result.success(insReportService.upAll(file)); } + + @ValueClassify("鎶ュ憡缂栧埗") + @ApiOperation(value = "鍒ゆ柇鏄惁鐢熸垚鎬绘姤鍛�") + @PostMapping("/isReport") + public Result isReport(Integer id,Integer state) { + return Result.success(insReportService.isReport(id,state)); + } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java index 9755b70..bef9b77 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/SampleProductDto.java @@ -22,4 +22,7 @@ //妫�楠屼汉 private String checkName; + //娆℃暟(妫�楠屾鏁�) + private Integer num1; + } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java index 55f7297..28d3c7e 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java @@ -30,22 +30,29 @@ IPage<InsOrderPlanTaskSwitchVo> inspectionOrderDetailsTaskSwitching(Page page, @Param("ew") QueryWrapper<InsOrderPlanDTO> ew, @Param("userId") Integer userId, @Param("sonLaboratory") String sonLaboratory, @Param("laboratory") String laboratory); List<SampleProductDto> selectSampleProductListByOrderId(Integer id); + List<SampleProductDto> selectSampleProductListByOrder2Id(Integer id); List<SampleProductDto> selectSampleProductListByOrderId2(Integer id); + List<SampleProductDto> selectSampleProductListByOrder2Id2(Integer id); List<SampleProductDto3> selectSampleProductListByOrderId3(List<Integer> ids); List<SampleProductDto> getInsOrderAndSample(Integer id, String laboratory); + List<SampleProductDto> getInsOrderAndSample2(Integer id, String laboratory); String getSampleEn(String sample); - List<InsProduct> getInsProduct1(Integer id, String laboratory); + List<InsProduct> getInsProduct1(@Param("id") Integer id, @Param("laboratory") String laboratory); + List<InsProduct> getIns2Product1(@Param("id") Integer id, @Param("laboratory") String laboratory); + List<InsProduct> get2InsProduct1(@Param("id") Integer id, @Param("laboratory") String laboratory, @Param("num") Integer num); List<Map<String, Object>> getReportModel(@Param("orderId") Integer orderId, @Param("id") Integer id, @Param("laboratory") String laboratory); SampleVo getDetailById(Integer sampleId); String selMethodById(Integer sampleId); + + List<Map<String, String>> selectSampleList(Integer orderId); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java index 0b435c1..49df4e4 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java @@ -87,4 +87,9 @@ * 閽堝鐢佃矾璇曢獙閫夋嫨鐨勭増鏈� */ private Integer version; + + /** + * 娆℃暟(妫�娴嬫鏁�) + */ + private Integer num; } \ No newline at end of file diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java index c6b89b4..c2a2087 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult.java @@ -58,4 +58,9 @@ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; + + /** + * 娆℃暟(妫�娴嬫鏁�) + */ + private Integer num; } \ No newline at end of file diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java index faac854..e6c7390 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java @@ -59,9 +59,10 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; - @ApiModelProperty("棰戠巼") + @ApiModelProperty("棰戞") private String frequency; - @ApiModelProperty("棰戠巼") + + @ApiModelProperty("棰戠偣") private String often; @ApiModelProperty("绔彛") @@ -75,4 +76,9 @@ @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸") private Integer result; + + /** + * 娆℃暟(妫�娴嬫鏁�) + */ + private Integer num; } 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 600e748..0bd7690 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 @@ -23,7 +23,7 @@ boolean claimInsOrderPlan(InsOrderPlanDTO entity); //鏅�氱殑淇濆瓨妫�楠屽唴瀹� - void saveInsContext(Map<String, Object> insContext); + void saveInsContext(Map<String, Object> insContext,Integer num); //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹� List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos); @@ -37,6 +37,7 @@ int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode); List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request); + List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num); List<String> checkSubmitPlan(Integer orderId, String laboratory); @@ -52,5 +53,4 @@ int deleteInsContext(InsProductResultVo insProductResultVo); - int deleteInsContext2(String frequency, Integer productId, String often); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java index 069c45c..0a8c896 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java @@ -38,4 +38,7 @@ String downAll(String ids); int upAll(MultipartFile file) throws IOException; + + //鏄惁鐢熸垚鎬绘姤鍛� + int isReport(Integer id,Integer state); } 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 58ded93..91912bb 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 @@ -244,6 +244,34 @@ case 0: //鏍峰搧 insProducts = insSampleMapper.getInsProduct1(id, laboratory); + if (insProducts.size()==0){ + insProducts = insSampleMapper.getIns2Product1(id, laboratory); + } + break; + case 1: + //鍏夌氦甯� + break; + case 2: + //鍏夌氦 + break; + case 3: + //濂楃 + break; + } + Set<Integer> set = new HashSet<>(); + Map<Integer, String> map2 = new HashMap<>(); + if (BeanUtil.isEmpty(insProducts)) return null; + getTemplateThing(set, map2, insProducts); + return insProducts; + } + + @Override + public List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num) { + List<InsProduct> insProducts = new ArrayList<>(); + switch (type) { + case 0: + //鏍峰搧 + insProducts = insSampleMapper.get2InsProduct1(id, laboratory,num); break; case 1: //鍏夌氦甯� @@ -515,20 +543,13 @@ public int deleteInsContext(InsProductResultVo insProductResultVo) { return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() .eq(InsProductResult2::getFrequency, insProductResultVo.getFrequency()) + .eq(InsProductResult2::getNum, insProductResultVo.getNum()) .in(InsProductResult2::getInsProductId, insProductResultVo.getProductIds())); } - @Override - public int deleteInsContext2(String frequency, Integer productId, String often) { - return insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() - .eq(InsProductResult2::getFrequency, frequency) - .eq(InsProductResult2::getInsProductId, productId) - .eq(InsProductResult2::getOften, often)); - } - @Override - public void saveInsContext(Map<String, Object> insContext) { + public void saveInsContext(Map<String, Object> insContext,Integer num) { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); CompletableFuture.supplyAsync(() -> { insContext.forEach((k, v) -> { @@ -544,6 +565,7 @@ result = results.get(0); } result.setInsProductId(Integer.parseInt(k)); + result.setNum(num); //妫�楠屽�� if (jo.get("insValue") != null) { JSONArray jsonArray = JSON.parseArray(JSON.toJSONString(jo.get("insValue"))); @@ -744,23 +766,30 @@ //鐢佃矾璇曢獙鐨勪繚瀛樻楠屽唴瀹� @Override public List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos) { - if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())){ + if (ObjectUtils.isEmpty(insProductResultDtos.getFrequency())) { throw new ErrorException("棰戠巼涓嶈兘涓虹┖"); } Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); //鏌ヨ妫�楠屽崟淇℃伅 InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId()); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId()) + .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory()) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� //鏌ヨ鏍峰搧淇℃伅 InsSample insSample = insSampleMapper.selectById(insProductResultDtos.getSampleId()); List<Integer> list = new ArrayList<>(); /*鏂板妫�楠岄」鐩楠屽�艰褰曡〃(閲囧彇鍏堝垹鍚庡)*/ insProductResult2Mapper.delete(Wrappers.<InsProductResult2>lambdaQuery() .in(InsProductResult2::getInsProductId, insProductResultDtos.getInsProductResult2s().stream().map(InsProductResult2::getInsProductId).distinct().collect(Collectors.toList())) + .eq(InsProductResult2::getNum, orderState.getNum()) .eq(InsProductResult2::getFrequency, insProductResultDtos.getFrequency())); for (InsProductResult2 insProductResult2 : insProductResultDtos.getInsProductResult2s()) { InsProduct insProduct = new InsProduct(); insProduct.setId(insProductResult2.getInsProductId());//椤圭洰id InsProductResult2 result2 = new InsProductResult2(); + result2.setNum(orderState.getNum()); result2.setInsProductId(insProductResult2.getInsProductId()); //棰戠巼 result2.setFrequency(insProductResultDtos.getFrequency()); @@ -818,8 +847,8 @@ ressult = 0; // 涓嶅悎鏍� break; } - }catch (Exception e) { - }finally { + } catch (Exception e) { + } finally { continue; } @@ -1036,7 +1065,7 @@ /*type=0 鍐嶆璇曢獙; type=1 缁х画璇曢獙 ; type=2 缁撴潫璇曢獙*/ switch (type) { case 0: - /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�)锛�*/ + /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/ //鏇存柊鍘熸潵鐨勬楠屼换鍔� // 鏌ヨ鏍规嵁 id 鍊掑簭鎺掑垪鐨勭涓�鏉¤褰� InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() @@ -1052,6 +1081,7 @@ .set(InsOrderState::getInsState, 4) .set(InsOrderState::getVerifyTell, tell) .set(InsOrderState::getVerifyUser, userId) + .set(InsOrderState::getNum, record.getNum() + 1)//娆℃暟鍔�1 .set(InsOrderState::getCreateTime, LocalDateTime.now())); } break; @@ -1110,6 +1140,7 @@ insOrderState.setInsOrderId(orderId); insOrderState.setLaboratory(minElement); insOrderState.setInsState(0); + insOrderState.setNum(1);//鍒濆鏄涓�娆� insOrderStateMapper.insert(insOrderState); } else { //濡傛灉缁х画璇曢獙娌℃湁鍏朵粬绔欑偣鐨勬楠屼换鍔¢偅灏辩粨鏉熻瘯楠� @@ -1125,629 +1156,9 @@ .set(InsOrderState::getInsState, 5) .set(InsOrderState::getVerifyTell, tell) .set(InsOrderState::getVerifyUser, userId)); - /*鐢熸垚鎶ュ憡*/ - generateReport(orderId); break; } return 1; - } - - //鐢熸垚鎶ュ憡 - private void generateReport(Integer orderId) { - LocalDateTime now = LocalDateTime.now(); - InsOrder insOrder = insOrderMapper.selectById(orderId); - Map<String, String> user = insProductMapper.selectUserById(insOrder.getUserId()); - //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 - List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); - InsReport insReport = new InsReport(); - insReport.setCode(insOrder.getEntrustCode()); - insReport.setInsOrderId(orderId); - List<Map<String, Object>> tables = new ArrayList<>(); - Set<String> standardMethod = new HashSet<>(); - Set<String> deviceSet = new HashSet<>(); - Set<String> models = new HashSet<>(); - AtomicReference<Integer> productSize = new AtomicReference<>(0); - String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; - AtomicReference<String> resultCh = new AtomicReference<>(""); - AtomicReference<String> resultEn = new AtomicReference<>(""); - /*鍩虹鎶ュ憡(7鍒�)*/ - samples.forEach(a -> { - Set<Integer> set = new HashSet<>(); - Map<Integer, String> map2 = new HashMap<>(); - Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, a.getId())); - productSize.set(productSize.get() + Integer.parseInt(productCount + "")); - models.add(a.getModel()); - standardMethod.add(baseMapper.getStandardMethodCode(a.getStandardMethodListId())); - getTemplateThing(set, map2, a.getInsProduct()); - for (InsProduct b : a.getInsProduct()) { - if (b.getInsProductResult() != null) { - List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); - for (JSONObject jsonObject : jsonObjects) { - if (!"".equals(jsonObject.get("v") + "")) { - deviceSet.add(jsonObject.get("v") + ""); - } - } - } - } - AtomicInteger index = new AtomicInteger(); - Set<String> itemSet = new HashSet<>(); - List<RowRenderData> rows = new ArrayList<>(); - //琛ㄦ牸鐨勮鏁� - for (int i = 0; i < 3 + a.getInsProduct().size(); i++) { - RowRenderData rowRenderData = new RowRenderData(); - RowStyle rowStyle = new RowStyle(); - rowStyle.setHeight(40); - rowRenderData.setRowStyle(rowStyle); - List<CellRenderData> cells = new ArrayList<>(); - if (i >= 2 && i < 2 + a.getInsProduct().size()) { - if (itemSet.add(a.getInsProduct().get(i - 2).getInspectionItem())) { - index.getAndIncrement(); - } - } - //鍒楁暟 - for (int j = 0; j < 7; 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 (i == 0) { - //绗竴琛� - if (j == 0 || j == 1) { - //绗竴鍒楀拰绗簩鍒� - textRenderData.setText("鏍峰搧缂栧彿@Sample number鈭�1"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 2 || j == 3) { - //绗笁鍒楀拰绗洓鍒� - textRenderData.setText(a.getSampleCode() + "鈭�2"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText("瑙勬牸鍨嬪彿@Type"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗叚鍒楀拰绗竷鍒� - textRenderData.setText(a.getModel() + "鈭�3"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else if (i == 1) { - //绗簩琛� - if (j == 0) { - //绗竴鍒� - textRenderData.setText("搴忓彿@No."); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 1 || j == 2) { - //绗簩鍒楀拰绗笁鍒� - textRenderData.setText("妫�娴嬮」鐩瓳Testing item鈭�4"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 3) { - //绗洓鍒� - textRenderData.setText("鍗曚綅@Unit"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText("鏍囧噯瑕佹眰@Requirement"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 5) { - //绗叚鍒� - textRenderData.setText("妫�楠岀粨鏋淍Test result"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗竷鍒� - textRenderData.setText("缁撹@Conclusion"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else if (i == 2 + a.getInsProduct().size()) { - //鏈�鍚庝竴琛� - if (j == 0 || j == 1) { - //绗竴鍒楀拰绗簩鍒� - textRenderData.setText("澶囨敞鈭�5"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //鍏朵綑鍒� - textRenderData.setText("鈥溾垰鈥濊〃绀洪」鐩悎鏍硷紝鈥溍椻�濊〃绀洪」鐩笉鍚堟牸銆侤鈥溾垰鈥� indicates test item is qualified,鈥溍椻�� indicates test item is not qualified 鈭�6"); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } - } else { - //鍏朵綑琛� - if (j == 0) { - //绗竴鍒� - textRenderData.setText(index + "鈭�2" + index); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 1) { - //绗簩鍒� - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } else { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 2) { - //绗笁鍒� - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclass())) { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemSubclassEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass() + "@" + a.getInsProduct().get(i - 2).getInspectionItemSubclassEn()); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItemSubclass()); - } - } else { - if (ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getInspectionItemEn())) { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "@" + a.getInsProduct().get(i - 2).getInspectionItemEn() + "鈭�3" + index); - } else { - textRenderData.setText(a.getInsProduct().get(i - 2).getInspectionItem() + "鈭�3" + index); - } - } - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 3) { - //绗洓鍒� - textRenderData.setText(ObjectUtil.isNotEmpty(a.getInsProduct().get(i - 2).getUnit()) ? a.getInsProduct().get(i - 2).getUnit() : ""); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 4) { - //绗簲鍒� - textRenderData.setText(a.getInsProduct().get(i - 2).getTell()); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else if (j == 5) { - //绗叚鍒� - textRenderData.setText(a.getInsProduct().get(i - 2).getLastValue()); - renderData.add(textRenderData); - paragraphRenderData.setContents(renderData); - paragraphRenderDataList.add(paragraphRenderData); - cellRenderData.setParagraphs(paragraphRenderDataList); - cells.add(cellRenderData); - } else { - //绗竷鍒� - if (ObjectUtils.isEmpty(a.getInsProduct().get(i - 2).getInsResult())) { - textRenderData.setText("-"); - } else if (a.getInsProduct().get(i - 2).getInsResult() == 1) { - textRenderData.setText("鈭�"); - } else if (a.getInsProduct().get(i - 2).getInsResult() == 0) { - textRenderData.setText("脳"); - } else { - 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); - - List<TableRenderData> tables1 = new ArrayList<>(); - tableRenderData.setRows(new ArrayList<>()); - int totalHeight = 0; - int pageHeightLimit = 450; // 鍋囪姣忛〉鐨勯珮搴﹂檺鍒朵负500鍗曚綅 - int rowHeight = 0; - List<RowRenderData> firstTwoRows = new ArrayList<>(); // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍� - List<RowRenderData> endRows = new ArrayList<>(); // 淇濆瓨鏈�鍚庝竴琛屽娉ㄤ互渚垮鍒跺埌鏂拌〃鏍� - // 淇濆瓨鍓嶄袱琛屼互渚垮鍒跺埌鏂拌〃鏍� - if (rows.size() >= 3) { - firstTwoRows.add(rows.get(0)); - firstTwoRows.add(rows.get(1)); - endRows.add(rows.get(rows.size() - 1)); - } - for (RowRenderData row : rows) { - rowHeight = calculateRowHeight(row); // 鑷畾涔夋柟娉曡绠楄楂� - if (totalHeight + rowHeight > pageHeightLimit) { - tableRenderData.getRows().addAll(endRows); - // 鍒涘缓鏂拌〃鏍煎苟澶嶅埗鍓嶄袱琛� - TableRenderData newTableRenderData = new TableRenderData(); - newTableRenderData.setRows(new ArrayList<>(firstTwoRows)); - //璁剧疆鏍峰紡 - TableStyle tableStyle = new TableStyle(); - tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); - tableStyle.setWidth("10000"); - tableStyle.setAlign(TableRowAlign.CENTER); - BorderStyle borderStyle = new BorderStyle(); - borderStyle.setColor("000000"); - borderStyle.setType(XWPFTable.XWPFBorderType.THICK); - borderStyle.setSize(14); - tableStyle.setLeftBorder(borderStyle); - tableStyle.setTopBorder(borderStyle); - tableStyle.setRightBorder(borderStyle); - tableStyle.setBottomBorder(borderStyle); - tableRenderData.setTableStyle(tableStyle); - newTableRenderData.setTableStyle(tableStyle); - tables1.add(tableRenderData); - tableRenderData = newTableRenderData; - totalHeight = 0; - } - totalHeight += rowHeight; - tableRenderData.getRows().add(row); - } - if (!tableRenderData.getRows().isEmpty()) { - //璁剧疆鏍峰紡 - TableStyle tableStyle = new TableStyle(); - tableStyle.setColWidths(new int[]{650, 1600, 2000, 750, 2800, 1100, 1100}); - tableStyle.setWidth("10000"); - tableStyle.setAlign(TableRowAlign.CENTER); - BorderStyle borderStyle = new BorderStyle(); - borderStyle.setColor("000000"); - borderStyle.setType(XWPFTable.XWPFBorderType.THICK); - borderStyle.setSize(14); - tableStyle.setLeftBorder(borderStyle); - tableStyle.setTopBorder(borderStyle); - tableStyle.setRightBorder(borderStyle); - tableStyle.setBottomBorder(borderStyle); - tableRenderData.setTableStyle(tableStyle); - tables1.add(tableRenderData); - } - tables1.forEach(table -> { - Map<String, Object> tableMap = new HashMap<>(); - tableMap.put("table", table); - tableMap.put("report", insReport); - tables.add(tableMap); - }); - }); - - String url; - try { - InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); - File file = File.createTempFile("temp", ".tmp"); - OutputStream outputStream = new FileOutputStream(file); - IOUtils.copy(inputStream, outputStream); - url = file.getAbsolutePath(); - } catch (FileNotFoundException e) { - throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); - } catch (IOException e) { - throw new RuntimeException(e); - } - StringBuilder standardMethod2 = new StringBuilder(); - for (String s : standardMethod) { - standardMethod2.append("銆�").append(s); - } - standardMethod2.replace(0, 1, ""); - tables.forEach(table -> { - table.put("tableSize", tables.size() + 1); - }); - List<Map<String, String>> deviceList = null; - if (deviceSet.size() != 0) { - deviceList = insOrderMapper.selectDeviceList(deviceSet); - } - Map<String, String> codeStr = new HashMap<>(); - codeStr.put("鎶ュ憡缂栧彿", insReport.getCode()); - codeStr.put("鏍峰搧鍚嶇О", insOrder.getSample()); - codeStr.put("瑙勬牸鍨嬪彿", samples.get(0).getModel()); - codeStr.put("鍙戞斁鏃ユ湡", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - String codePath; - try { - codePath = new MatrixToImageWriter().code(JackSonUtil.marshal(codeStr).replaceAll("\\{", "") - .replaceAll("}", "").replaceAll(",", "").replaceAll("\"", ""), twoCode); - } catch (Exception e) { - throw new RuntimeException(e); - } - String modelStr = ""; - for (String model : models) { - modelStr += "," + model; - } - String finalModelStr = modelStr; - String sampleEn = insSampleMapper.getSampleEn(insOrder.getSample()); - String orderType = insOrderMapper.getEnumLabelByValue(insOrder.getOrderType()); - String formType = insOrderMapper.getEnumLabelByValue(insOrder.getFormType()); - ConfigureBuilder builder = Configure.builder(); - builder.useSpringEL(true); - List<Map<String, String>> finalDeviceList = deviceList; - Integer userId = insSampleUserMapper.selectOne(Wrappers.<InsSampleUser>lambdaQuery() - .eq(InsSampleUser::getInsSampleId, orderId).last("limit 1")).getUserId(); - String signatureUrl; - try { - signatureUrl = userMapper.selectById(userId).getSignatureUrl(); - } catch (Exception e) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - if (ObjectUtils.isEmpty(signatureUrl) || signatureUrl.equals("")) { - throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); - } - Custom custom = customMapper.selectById(insOrder.getCompanyId()); - if (!resultCh.get().equals("")) { - resultCh.set("渚濇嵁濮旀墭瑕佹眰锛�" + resultCh.get().replaceFirst("銆�", "") + "绛夋墍妫�椤圭洰涓嶇鍚堣姹傦紝鍏朵綑鎵�妫�椤圭洰鍧囩鍚堣姹傘��"); - resultEn.set("According to commissioned requirements," + resultEn.get().replaceFirst("銆�", "") + " these inspected items do not meet the requirements, all other inspected items meet the requirements."); - } else { - resultCh.set("渚濇嵁濮旀墭瑕佹眰锛屾墍妫�椤圭洰鍧囩鍚堣姹傘��"); - resultEn.set("According to commissioned requirements, all the tested items meet the requirements."); - } - - /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ - List<Map<String, Object>> images = new ArrayList<>(); - List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery().eq(InsOrderFile::getType, 1).eq(InsOrderFile::getInsOrderId, orderId)); - if (CollectionUtils.isNotEmpty(insOrderFiles)) { - insOrderFiles.forEach(insOrderFile -> { - Map<String, Object> image = new HashMap<>(); - PictureRenderData pictureRenderData = Pictures.ofLocal(imgUrl + "/" + insOrderFile.getFileUrl()).sizeInCm(17, 20).create(); - image.put("url", pictureRenderData); - image.put("report", insReport); - images.add(image); - }); - } - //濮旀墭浜哄拰鐢佃瘽瀛楁鍒ゆ柇 - if (ObjectUtils.isEmpty(insOrder.getPrepareUser())) { - insOrder.setPrepareUser("/"); - } - if (ObjectUtils.isEmpty(insOrder.getPhone())) { - insOrder.setPhone("/"); - } - //妫�楠岄」鐩殑鐜 - InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).eq(InsProduct::getInsSampleId, samples.get(0).getId())).get(0); - String environment = ""; - environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "鈩� " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : ""); - String finalEnvironment = environment; - XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( - new HashMap<String, Object>() {{ - put("order", insOrder); - put("report", insReport); - put("environment", finalEnvironment); - put("custom", custom); - put("sampleSize", samples.size()); - put("tables", tables); - put("tableSize", tables.size() + 1); - put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); - put("deviceList", finalDeviceList); - put("twoCode", Pictures.ofLocal(codePath).create()); - put("models", finalModelStr.replace(",", "")); - put("productSize", productSize); - put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("createTimeEn", monthNames[now.getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear()); - put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue() - 1] + " " + insOrder.getInsTime().getDayOfMonth() + ", " + insOrder.getInsTime().getYear()); - put("writeUrl", null); - put("insUrl", Pictures.ofLocal(imgUrl + "/" + signatureUrl).create()); - put("images", images); - put("examineUrl", null); - put("ratifyUrl", null); - put("sampleEn", sampleEn); - put("orderType", orderType); - put("getTime", insOrder.getExamineTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); - put("getTimeEn", monthNames[insOrder.getExamineTime().getMonthValue() - 1] + " " + insOrder.getExamineTime().getDayOfMonth() + ", " + insOrder.getExamineTime().getYear()); - put("seal1", null); - put("seal2", null); - put("formTypeCh", formType); - put("formTypeEn", insOrder.getFormType()); - put("resultCh", resultCh.get()); - put("resultEn", resultEn.get()); - }}); - try { - String name = insReport.getCode().replace("/", "") + ".docx"; - template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); - insReport.setUrl("/word/" + name); - insReportMapper.insert(insReport); - insOrder.setInsState(5); - insOrderMapper.updateById(insOrder); - } catch (IOException e) { - throw new RuntimeException(e); - } - // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 - String path = wordUrl + "/" + insReport.getCode().replace("/", "") + ".docx"; - try { - FileInputStream stream = new FileInputStream(path); - XWPFDocument document = new XWPFDocument(stream); - List<XWPFTable> xwpfTables = document.getTables(); - for (int i = 1; i < xwpfTables.size() - (deviceList == null ? 1 : 2); 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(ParagraphAlignment.CENTER); - } - } - } - 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); - } - //澶勭悊涓嫳鏂囨崲琛岀殑闂 - try { - FileInputStream stream1 = new FileInputStream(path); - XWPFDocument document1 = new XWPFDocument(stream1); - List<XWPFTable> xwpfTables1 = document1.getTables(); - for (int i = 1; i < xwpfTables1.size() - (deviceList == null ? 1 : 2); i++) { - for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { - for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { - if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { - String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); - String[] split = text.split("@"); - xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); - XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); - XWPFRun run = xwpfParagraph.createRun(); - run.setText(split[0]); - if (ObjectUtils.isNotNull(split[1])) { - run.addBreak(); - run.setText(split[1]); - } - xwpfParagraph.setAlignment(ParagraphAlignment.CENTER); - } - } - } - } - FileOutputStream fileOutputStream1 = new FileOutputStream(path); - document1.write(fileOutputStream1); - fileOutputStream1.close(); - } catch (FileNotFoundException e) { - throw new RuntimeException(e); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - - // 璁$畻琛岄珮鐨勬柟娉� - private int calculateRowHeight(RowRenderData rowRenderData) { - // 瀹炵幇璁$畻閫昏緫锛屽彲鑳介渶瑕佹牴鎹崟鍏冩牸鍐呭鍜屽瓧浣撶瓑鍙傛暟杩涜璁$畻 - int height = 0; - for (CellRenderData cell : rowRenderData.getCells()) { - int cellHeight = estimateCellHeight(cell); // 鏍规嵁鍐呭浼扮畻鍗曞厓鏍奸珮搴� - if (cellHeight > height) { - height = cellHeight; - } - } - return height; - } - - //鏍规嵁鍗曞厓鏍肩殑鏂囨湰鍐呭璁$畻瀹為檯琛岄珮 - private int estimateCellHeight(CellRenderData cellRenderData) { - // 鍋囪榛樿琛岄珮鏄�40 - int defaultHeight = 40; - // 鑾峰彇鍗曞厓鏍间腑鐨勬墍鏈夋钀� - List<ParagraphRenderData> paragraphs = cellRenderData.getParagraphs(); - int estimatedHeight = 0; - // 閬嶅巻娈佃惤锛屼及绠楁瘡涓钀界殑楂樺害 - for (ParagraphRenderData paragraph : paragraphs) { - List<RenderData> contents = paragraph.getContents(); - for (RenderData content : contents) { - if (content instanceof TextRenderData) { - TextRenderData text = (TextRenderData) content; - Style style = text.getStyle(); - // 鍋囪姣忚鏂囨湰鐨勯珮搴︿负瀛椾綋澶у皬鐨�1.2鍊� - Double fontSize = Objects.isNull(style.getFontSize()) ? 12.0 : style.getFontSize(); - int lines = (int) Math.ceil(text.getText().length() / 15.0); // 鍋囪姣忚绾�15涓瓧绗� - int textHeight = (int) (fontSize * 1.2 * lines); - // 绱姞娈佃惤鐨勯珮搴� - estimatedHeight += textHeight; - } - } - } - // 杩斿洖鏈�澶у�硷紝纭繚楂樺害涓嶄綆浜庨粯璁ら珮搴� - return Math.max(estimatedHeight, defaultHeight); } private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { @@ -1777,7 +1188,13 @@ @Override public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) { - List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId)); + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId)); + InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, orderId) + .eq(InsOrderState::getLaboratory, laboratory) + .orderByDesc(InsOrderState::getId) + .last("LIMIT 1"));// 纭繚鍙彇涓�鏉¤褰� List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList()); List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() .in(InsProduct::getInsSampleId, ids) @@ -1804,6 +1221,7 @@ //鐢佃矾璇曢獙鐨勬楠岄」鐩�,闇�瑕佸湪鎻愪氦鐨勬椂鍊欏啀鍘昏祴鍊煎悎鏍间笌涓嶅悎鏍� if (product.getInspectionItem().equals("鐢佃矾璇曢獙")) { List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() + .eq(InsProductResult2::getNum, orderState.getNum()) .eq(InsProductResult2::getInsProductId, product.getId())).stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList()); if (collect.contains(0)) { product.setInsResult(0);//涓嶅悎鏍� @@ -1871,6 +1289,7 @@ List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList()); for (Integer ip : ips) { List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery() + .eq(InsProductResult::getNum, orderState.getNum()) .eq(InsProductResult::getInsProductId, ip)); if (insProductResults.size() > 1) { for (int i = 1; i < insProductResults.size(); i++) { @@ -1884,19 +1303,6 @@ String key = "frequency" + ":" + entrustCode + ":*"; RedisUtil.delsLike(key); return 1; - } - - // 鑾峰彇涓や釜localDateTime鐨勬瘡涓�澶� - public static List<LocalDateTime> getLocalDateTimesBetween(LocalDateTime start, LocalDateTime end) { - List<LocalDateTime> localDateTimes = new ArrayList<>(); - LocalDate currentDate = start.toLocalDate(); - LocalDateTime currentLocalDateTime = start; - while (!currentDate.isAfter(end.toLocalDate())) { - localDateTimes.add(currentLocalDateTime); - currentLocalDateTime = currentLocalDateTime.plusDays(1); - currentDate = currentDate.plusDays(1); - } - return localDateTimes; } public static String getWeek(String dayStr) { diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java index bafa574..8b7e91f 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java @@ -144,6 +144,7 @@ insOrderState.setInsOrderId(orderId); insOrderState.setLaboratory(sonLaboratory); insOrderState.setInsState(0); + insOrderState.setNum(1);//鍒濆鏄涓�娆� insOrderStateMapper.insert(insOrderState); //杩欓噷鏄湪缁欏垎閰嶇殑鎸囧畾鐨勪汉鍜岃瘯楠屽涓嬪彂妫�楠屼汉 if (userId != null) { @@ -381,6 +382,9 @@ Map<String, Object> map = new HashMap<>(); InsOrder insOrder = insOrderMapper.selectById(id); List<SampleProductDto> list = insSampleMapper.selectSampleProductListByOrderId2(id); + if (list.size()==0){ + list = insSampleMapper.selectSampleProductListByOrder2Id2(id); + } map.put("insOrder", insOrder); map.put("sampleProduct", list); return map; @@ -393,20 +397,10 @@ insOrder.setExamineTime(LocalDateTime.now()); if (insOrder.getState() == 1) { //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿 - String code = baseMapper.selLaboratoryCode(insOrder.getLaboratory()); - if (StringUtils.isEmpty(code)) { - code = ""; - } Custom custom = customMapper.selectById(order.getCompanyId()); System.out.println("=============" + custom.getCompany()); System.out.println("-------------" + order.getCompany()); - String code2 = custom.getCode2(); - if (!custom.getCompany().equals(order.getCompany())) { - Custom one = customMapper.selectOne(Wrappers.<Custom>lambdaQuery().eq(Custom::getCompany, order.getCompany())); - insOrder.setCompanyId(one.getId()); - code2 = one.getCode2(); - } - insOrder.setEntrustCode(giveCode.giveCode2("JCZX/" + code + "-" + code2 + "-", insOrder.getCompanyId(), insOrder.getLaboratory(), "ins_order", "", "yyMM")); + insOrder.setEntrustCode(giveCode.giveCode2("TXJC-", insOrder.getCompanyId(), insOrder.getLaboratory(), "ins_order", "", "yyMMdd")); //绯荤粺鏌ヨ绔欑偣浠诲姟鍒嗗竷鎯呭喌,灏嗘楠屼换鍔′笅鍙戣嚦鏈�灏戠殑绔欏彴 List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() .eq(InsSample::getInsOrderId, insOrder.getId()).select(InsSample::getId)); @@ -493,6 +487,9 @@ Map<String, Object> map = new HashMap<>(); InsOrder insOrder = insOrderMapper.selectById2(id); List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory); + if (list.size()==0){ + list=insSampleMapper.getInsOrderAndSample2(id, laboratory); + } for (SampleProductDto sampleProductDto : list) { List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList()); List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery() 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 abf4187..3a719a9 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 @@ -1,12 +1,23 @@ package com.yuanchu.mom.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.aspose.words.*; +import com.aspose.words.Document; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.data.Pictures; +import com.deepoove.poi.config.Configure; +import com.deepoove.poi.config.ConfigureBuilder; +import com.deepoove.poi.data.*; +import com.deepoove.poi.data.style.*; +import com.deepoove.poi.data.style.Style; +import com.deepoove.poi.util.TableTools; import com.itextpdf.text.BadElementException; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfContentByte; @@ -15,16 +26,18 @@ import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; import com.yuanchu.mom.dto.ReportPageDto; +import com.yuanchu.mom.dto.SampleProductDto; import com.yuanchu.mom.exception.ErrorException; -import com.yuanchu.mom.mapper.InsOrderMapper; -import com.yuanchu.mom.mapper.InsReportMapper; -import com.yuanchu.mom.mapper.UserMapper; -import com.yuanchu.mom.pojo.InsOrder; -import com.yuanchu.mom.pojo.InsReport; -import com.yuanchu.mom.pojo.User; +import com.yuanchu.mom.mapper.*; +import com.yuanchu.mom.pojo.*; import com.yuanchu.mom.service.InsReportService; +import com.yuanchu.mom.service.StandardTemplateService; +import com.yuanchu.mom.utils.JackSonUtil; +import com.yuanchu.mom.utils.MatrixToImageWriter; import com.yuanchu.mom.utils.QueryWrappers; import com.yuanchu.mom.vo.Result; +import org.apache.commons.io.IOUtils; +import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -44,6 +57,8 @@ import java.util.*; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; @@ -73,8 +88,32 @@ @Value("${file.path}") private String imgUrl; + @Value("${twoCode}") + private String twoCode; + @Resource private InsOrderMapper insOrderMapper; + + @Resource + private InsOrderStateMapper insOrderStateMapper; + + @Resource + private InsProductMapper insProductMapper; + + @Resource + private InsSampleMapper insSampleMapper; + + @Resource + private InsSampleUserMapper insSampleUserMapper; + + @Resource + private CustomMapper customMapper; + + @Resource + private InsOrderFileMapper insOrderFileMapper; + + @Resource + private StandardTemplateService standardTemplateService; @Override public Map<String, Object> pageInsReport(Page page, ReportPageDto reportPageDto) { @@ -94,7 +133,7 @@ laboratory = departLims; } } - map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto),laboratory)); + map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto), laboratory)); return map; } @@ -171,7 +210,7 @@ //鎵瑰噯 @Override @Transactional(rollbackFor = Exception.class) - public int ratifyReport(Integer id, Integer isRatify, String ratifyTell,String sealUrl) { + public int ratifyReport(Integer id, Integer isRatify, String ratifyTell, String sealUrl) { InsReport insReport = insReportMapper.selectById(id); insReport.setIsRatify(isRatify); if (ObjectUtils.isNotEmpty(ratifyTell)) { @@ -303,8 +342,7 @@ // 澶嶅埗鏂囦欢鍒版寚瀹氳矾寰� Files.copy(f.toPath(), new File(urlString).toPath(), StandardCopyOption.REPLACE_EXISTING); inReport("/word/" + pathName, insReport.getId()); - } - catch (IOException e) { + } catch (IOException e) { throw new ErrorException("鏂囦欢涓婁紶澶辫触"); } } @@ -319,6 +357,28 @@ if (unzipDir.exists()) { deleteDirectory(unzipDir); // 鍒犻櫎鏃х殑涓存椂鏂囦欢澶� } + } + return 0; + } + + //鏄惁闇�瑕佺敓鎴愭姤鍛�: 0涓嶉渶瑕�;1闇�瑕� + @Override + @Transactional(rollbackFor = Exception.class) + public int isReport(Integer id, Integer state) { + //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛� + Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, id).eq(InsOrderState::getInsState, 5)); + if (count > 0) { + if (state == 1) { + generateReport(id); + } else { + //缁撴潫璁㈠崟 + InsOrder insOrder = new InsOrder(); + insOrder.setId(id); + insOrder.setState(4); + insOrderMapper.updateById(insOrder); + } + } else { + throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熶骇鎶ュ憡!"); } return 0; } @@ -425,6 +485,19 @@ os = new FileOutputStream(file); //瑕佽浆鎹㈢殑word鏂囦欢 com.aspose.words.Document doc = new com.aspose.words.Document(wordPath); + TableCollection tables = doc.getFirstSection().getBody().getTables(); + for (Table table : tables) { + RowCollection rows = table.getRows(); + table.setAllowAutoFit(false); + for (Row row : rows) { + CellCollection cells = row.getCells(); + for (Cell cell : cells) { + CellFormat cellFormat = cell.getCellFormat(); + cellFormat.setFitText(false); //璁剧疆鑷�傚簲鍏抽棴 + cellFormat.setWrapText(true); // 璁剧疆鑷姩鎹㈣ + } + } + } doc.save(os, SaveFormat.PDF); //娣诲姞楠戠紳绔� @@ -503,6 +576,369 @@ } stamp.close(); } + + //鐢熸垚鎶ュ憡 + private void generateReport(Integer orderId) { + LocalDateTime now = LocalDateTime.now(); + InsOrder insOrder = insOrderMapper.selectById(orderId); + //濮旀墭閮ㄩ棬 departLims + String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser()); + //samples鏄繃婊ゆ帀娌℃湁妫�楠岄」鐩殑鏍峰搧 + List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId); + if (samples.size()==0){ + samples=insSampleMapper.selectSampleProductListByOrder2Id(orderId); + } + String sampleCode = samples.get(0).getSampleCode(); + InsReport insReport = new InsReport(); + insReport.setCode(insOrder.getEntrustCode()); + insReport.setInsOrderId(orderId); + List<Map<String, Object>> tables = new ArrayList<>(); + Set<String> standardMethod = new HashSet<>(); + Set<String> deviceSet = new HashSet<>(); + Set<String> models = new HashSet<>(); + AtomicReference<Integer> productSize = new AtomicReference<>(0); + AtomicReference<Integer> productSize1 = new AtomicReference<>(0); + AtomicReference<Integer> productSize2 = new AtomicReference<>(0); + AtomicReference<Integer> productSize3 = new AtomicReference<>(0); + String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; + samples.forEach(s -> { + models.add(s.getModel()); + standardMethod.add(insOrderMapper.getStandardMethodCode(s.getStandardMethodListId())); + //鎬绘暟 + Long productCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getInsSampleId, s.getId())); + productSize.set(productSize.get() + Integer.parseInt(productCount + "")); + //涓嶅垽瀹� + Long productCount1 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult,3)); + productSize1.set(productSize1.get() + Integer.parseInt(productCount1 + "")); + //涓嶅悎鏍� + Long productCount2 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult,0)); + productSize2.set(productSize2.get() + Integer.parseInt(productCount2 + "")); + //鍚堟牸 + Long productCount3 = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, s.getId()) + .eq(InsProduct::getInsResult,1)); + productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); + for (InsProduct b : s.getInsProduct()) { + if (b.getInsProductResult() != null) { + List<JSONObject> jsonObjects = JSON.parseArray(b.getInsProductResult().getEquipValue(), JSONObject.class); + for (JSONObject jsonObject : jsonObjects) { + if (!"".equals(jsonObject.get("v") + "")) { + deviceSet.add(jsonObject.get("v") + ""); + } + } + } + if (b.getInsProductResult2() != null) { + for (InsProductResult2 jsonObject : b.getInsProductResult2()) { + if (jsonObject.getEquipValue() != null) { + deviceSet.add(jsonObject.getEquipValue()); + } + } + } + } + }); + String url; + try { + InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); + File file = File.createTempFile("temp", ".tmp"); + OutputStream outputStream = new FileOutputStream(file); + IOUtils.copy(inputStream, outputStream); + url = file.getAbsolutePath(); + } catch (FileNotFoundException e) { + throw new ErrorException("鎵句笉鍒版ā鏉挎枃浠�"); + } catch (IOException e) { + throw new RuntimeException(e); + } + StringBuilder standardMethod2 = new StringBuilder(); + for (String s : standardMethod) { + standardMethod2.append("銆�").append(s); + } + standardMethod2.replace(0, 1, ""); + tables.forEach(table -> { + table.put("tableSize", tables.size() + 1); + }); + List<Map<String, String>> deviceList = null; + if (deviceSet.size() != 0) { + deviceList = insOrderMapper.selectDeviceList(deviceSet); + } + Map<String, String> codeStr = new HashMap<>(); + codeStr.put("鎶ュ憡缂栧彿", insReport.getCode()); + codeStr.put("鏍峰搧鍚嶇О", insOrder.getSample()); + codeStr.put("瑙勬牸鍨嬪彿", samples.get(0).getModel()); + codeStr.put("鍙戞斁鏃ユ湡", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + String codePath; + try { + codePath = new MatrixToImageWriter().code(JackSonUtil.marshal(codeStr).replaceAll("\\{", "") + .replaceAll("}", "").replaceAll(",", "").replaceAll("\"", ""), twoCode); + } catch (Exception e) { + throw new RuntimeException(e); + } + String modelStr = ""; + for (String model : models) { + modelStr += "," + model; + } + String finalModelStr = modelStr; + String sampleEn = insSampleMapper.getSampleEn(insOrder.getSample()); + String orderType = insOrderMapper.getEnumLabelByValue(insOrder.getOrderType()); + String formType = insOrderMapper.getEnumLabelByValue(insOrder.getFormType()); + ConfigureBuilder builder = Configure.builder(); + builder.useSpringEL(true); + List<Map<String, String>> finalDeviceList = deviceList; + List<Map<String, String>> sampleList = insSampleMapper.selectSampleList(orderId); + Integer userId = insSampleUserMapper.selectOne(Wrappers.<InsSampleUser>lambdaQuery() + .eq(InsSampleUser::getInsSampleId, orderId).last("limit 1")).getUserId(); + String signatureUrl; + try { + signatureUrl = userMapper.selectById(userId).getSignatureUrl(); + } catch (Exception e) { + throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); + } + if (ObjectUtils.isEmpty(signatureUrl) || signatureUrl.equals("")) { + throw new ErrorException("鎵句笉鍒版楠屼汉鐨勭鍚�"); + } + Custom custom = customMapper.selectById(insOrder.getCompanyId()); + + /*鑾峰彇闄勪欢鍥剧墖绫诲瀷*/ + List<Map<String, Object>> images = new ArrayList<>(); + List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery().eq(InsOrderFile::getType, 1).eq(InsOrderFile::getInsOrderId, orderId)); + if (CollectionUtils.isNotEmpty(insOrderFiles)) { + insOrderFiles.forEach(insOrderFile -> { + Map<String, Object> image = new HashMap<>(); + PictureRenderData pictureRenderData = Pictures.ofLocal(imgUrl + "/" + insOrderFile.getFileUrl()).sizeInCm(17, 20).create(); + image.put("url", pictureRenderData); + image.put("report", insReport); + images.add(image); + }); + } + //濮旀墭浜哄拰鐢佃瘽瀛楁鍒ゆ柇 + if (ObjectUtils.isEmpty(insOrder.getPrepareUser())) { + insOrder.setPrepareUser("/"); + } + if (ObjectUtils.isEmpty(insOrder.getPhone())) { + insOrder.setPhone("/"); + } + //妫�楠岄」鐩殑鐜 + InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).eq(InsProduct::getInsSampleId, samples.get(0).getId())).get(0); + String environment = ""; + environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "鈩� " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : ""); + String finalEnvironment = environment; + List<SampleProductDto> finalSamples = samples; + XWPFTemplate template = XWPFTemplate.compile(url, builder.build()).render( + new HashMap<String, Object>() {{ + put("order", insOrder); + put("report", insReport); + put("departLims", departLims); + put("sampleCode", sampleCode); + put("environment", finalEnvironment); + put("custom", custom); + put("sampleSize", finalSamples.size()); + put("tables", tables); + put("tableSize", tables.size() + 1); + put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2)); + put("deviceList", finalDeviceList); + put("sampleList", sampleList); + put("twoCode", Pictures.ofLocal(codePath).create()); + put("models", finalModelStr.replace(",", "")); + put("productSize", productSize); + put("productSize1", productSize1); + put("productSize2", productSize2); + put("productSize3", productSize3); + put("createTime", now.format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); + put("createTimeEn", monthNames[now.getMonthValue() - 1] + " " + now.getDayOfMonth() + ", " + now.getYear()); + put("insTime", insOrder.getInsTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); + put("insTimeEn", monthNames[insOrder.getInsTime().getMonthValue() - 1] + " " + insOrder.getInsTime().getDayOfMonth() + ", " + insOrder.getInsTime().getYear()); + put("writeUrl", null); + put("insUrl", Pictures.ofLocal(imgUrl + "/" + signatureUrl).create()); + put("images", images); + put("examineUrl", null); + put("ratifyUrl", null); + put("sampleEn", sampleEn); + put("orderType", orderType); + put("getTime", insOrder.getExamineTime().format(DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃�"))); + put("getTimeEn", monthNames[insOrder.getExamineTime().getMonthValue() - 1] + " " + insOrder.getExamineTime().getDayOfMonth() + ", " + insOrder.getExamineTime().getYear()); + put("seal1", null); + put("seal2", null); + put("formTypeCh", formType); + put("formTypeEn", insOrder.getFormType()); + }}); + try { + String name = insReport.getCode().replace("/", "") + ".docx"; + template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name))); + insReport.setUrl("/word/" + name); + insReportMapper.insert(insReport); + insOrder.setInsState(5); + insOrderMapper.updateById(insOrder); + } catch (IOException e) { + throw new RuntimeException(e); + } + // 澶勭悊鍚堝苟鍗曞厓鏍肩殑闂 + String path = wordUrl + "/" + insReport.getCode().replace("/", "") + ".docx"; + try { + FileInputStream stream = new FileInputStream(path); + XWPFDocument document = new XWPFDocument(stream); + List<XWPFTable> xwpfTables = document.getTables(); + for (int i = 1; i < xwpfTables.size() - (deviceList == null ? 1 : 2); 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<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); + } + //澶勭悊涓嫳鏂囨崲琛岀殑闂 + try { + FileInputStream stream1 = new FileInputStream(path); + XWPFDocument document1 = new XWPFDocument(stream1); + List<XWPFTable> xwpfTables1 = document1.getTables(); + for (int i = 1; i < xwpfTables1.size() - (deviceList == null ? 1 : 2); i++) { + for (int j = 0; j < xwpfTables1.get(i).getRows().size(); j++) { + for (int k = 0; k < xwpfTables1.get(i).getRows().get(j).getTableCells().size(); k++) { + if (xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText().contains("@")) { + String text = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).getText(); + String[] split = text.split("@"); + xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).removeParagraph(0); + XWPFParagraph xwpfParagraph = xwpfTables1.get(i).getRows().get(j).getTableCells().get(k).addParagraph(); + XWPFRun run = xwpfParagraph.createRun(); + run.setText(split[0]); + if (ObjectUtils.isNotNull(split[1])) { + run.addBreak(); + run.setText(split[1]); + } + xwpfParagraph.setAlignment(org.apache.poi.xwpf.usermodel.ParagraphAlignment.CENTER); + } + } + } + } + FileOutputStream fileOutputStream1 = new FileOutputStream(path); + document1.write(fileOutputStream1); + fileOutputStream1.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + + // 璁$畻琛岄珮鐨勬柟娉� + private int calculateRowHeight(RowRenderData rowRenderData) { + // 瀹炵幇璁$畻閫昏緫锛屽彲鑳介渶瑕佹牴鎹崟鍏冩牸鍐呭鍜屽瓧浣撶瓑鍙傛暟杩涜璁$畻 + int height = 0; + for (CellRenderData cell : rowRenderData.getCells()) { + int cellHeight = estimateCellHeight(cell); // 鏍规嵁鍐呭浼扮畻鍗曞厓鏍奸珮搴� + if (cellHeight > height) { + height = cellHeight; + } + } + return height; + } + + //鏍规嵁鍗曞厓鏍肩殑鏂囨湰鍐呭璁$畻瀹為檯琛岄珮 + private int estimateCellHeight(CellRenderData cellRenderData) { + // 鍋囪榛樿琛岄珮鏄�40 + int defaultHeight = 40; + // 鑾峰彇鍗曞厓鏍间腑鐨勬墍鏈夋钀� + List<ParagraphRenderData> paragraphs = cellRenderData.getParagraphs(); + int estimatedHeight = 0; + // 閬嶅巻娈佃惤锛屼及绠楁瘡涓钀界殑楂樺害 + for (ParagraphRenderData paragraph : paragraphs) { + List<RenderData> contents = paragraph.getContents(); + for (RenderData content : contents) { + if (content instanceof TextRenderData) { + TextRenderData text = (TextRenderData) content; + Style style = text.getStyle(); + // 鍋囪姣忚鏂囨湰鐨勯珮搴︿负瀛椾綋澶у皬鐨�1.2鍊� + Double fontSize = Objects.isNull(style.getFontSize()) ? 12.0 : style.getFontSize(); + int lines = (int) Math.ceil(text.getText().length() / 15.0); // 鍋囪姣忚绾�15涓瓧绗� + int textHeight = (int) (fontSize * 1.2 * lines); + // 绱姞娈佃惤鐨勯珮搴� + estimatedHeight += textHeight; + } + } + } + // 杩斿洖鏈�澶у�硷紝纭繚楂樺害涓嶄綆浜庨粯璁ら珮搴� + return Math.max(estimatedHeight, defaultHeight); + } + + private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { + for (InsProduct product : insProducts) { + if (product.getTemplateId() == null) { + product.setTemplate(new ArrayList<>()); + continue; + } + String thing = null; + if (product.getTemplateId() != null && set.add(product.getTemplateId())) { + map2.put(product.getTemplateId(), standardTemplateService.getStandTempThingById(product.getTemplateId()) + ""); + thing = map2.get(product.getTemplateId()); + } + if (StrUtil.isNotEmpty(thing)) { + JSONObject sheet = JSON.parseObject(JSON.toJSONString(JSON.parseArray(JSON.toJSONString(JSON.parseObject(thing).get("data"))).get(0))); + JSONObject config = JSON.parseObject(JSON.toJSONString(sheet.get("config"))); + List<JSONObject> cellData = JSON.parseArray(JSON.toJSONString(sheet.get("celldata")), JSONObject.class); + Map<String, Object> style = new HashMap<>(); + style.put("rowlen", config.get("rowlen")); + style.put("columnlen", config.get("columnlen")); + product.setTemplate(cellData); + product.setStyle(style); + product.setTemplateName(standardTemplateService.getStandTempNameById(product.getTemplateId())); + } + } + } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java index a7bbee6..562ad63 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java @@ -52,5 +52,6 @@ private Integer sort; private Integer version; + private Integer num1; } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java index 68711b1..1711e37 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/vo/InsProductResultVo.java @@ -8,6 +8,9 @@ //鍒犻櫎棰戞 public class InsProductResultVo { + //娆℃暟 + private Integer num; + //棰戞 private String frequency; diff --git a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml index 6c68844..3a94afe 100644 --- a/inspect-server/src/main/resources/mapper/InsSampleMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsSampleMapper.xml @@ -27,7 +27,7 @@ <select id="findInsSampleAndOrder" resultType="com.yuanchu.mom.vo.InsOrderPlanVO"> select * from(select * from( SELECT - a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time,version + a.*,ios.ins_state,ios.verify_tell,verify_user,ios.id orderStateId,ios.create_time,ios.sort,sort_time,version,ios.num num1 FROM ( SELECT @@ -161,158 +161,21 @@ <select id="selectSampleProductListByOrderId" resultMap="sampleDto"> select isa.*, - ip.id ip_id, - inspection_item, - inspection_item_en, - inspection_item_class, - inspection_item_class_en, - inspection_item_subclass, - inspection_item_subclass_en, - ip.factory ip_factory, - ip.laboratory ip_laboratory, - ip.sample_type ip_sample_type, - ip.sample ip_sample, - ip.model ip_model, - son_laboratory, - ip.unit ip_unit, - price, - man_hour, - man_hour_group, - inspection_item_type, - inspection_value_type, - device_group, - checkout_number, - section, - value_type, - method, - man_day, - bsm, - ask, - tell, - `last_value`, - ip.ins_result ip_ins_result, - state, - ins_sample_id, - ip.create_user ip_create_user, - ip.update_user ip_update_user, - ip.create_time ip_create_time, - ip.update_time ip_update_time, - template_id, - ipr.ins_value, - ipr.com_value, - ipr.equip_value, - ipr2.frequency, - ipr2.often, - ipr2.port, - ipr2.angle, - ipr2.value, - ipr2.result, - ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, - ip.method_s - from ins_sample isa - left join ins_product ip on isa.id = ip.ins_sample_id - left join ins_product_result ipr on ip.id = ipr.ins_product_id - left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id - where ins_order_id = #{id} - and state = 1 - -- and ins_fiber_id is null - -- and ins_fibers_id is null - and <!--isa.sample_code NOT REGEXP '/'--> - isa.id in(select id1 from (select is2.id id1 ,ip.id from ins_sample is2 left join ins_product ip on is2.id = - ip.ins_sample_id where ip.id is not null)s ) - order by case when man_hour_group is NULL then 1 - when man_hour_group ='' then 1 else 0 end, - CASE - WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� - WHEN man_hour_group REGEXP '[0-9]+' THEN CAST(SUBSTRING(man_hour_group, 2)AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� - ,id asc - </select> - <select id="getInsOrderAndSample" resultMap="sampleDto"> - select isa.*, - ip.id ip_id, + ios.num num1, + ip.id ip_id, inspection_item, inspection_item_en, inspection_item_class, inspection_item_class_en, inspection_item_subclass, inspection_item_subclass_en, - ip.factory ip_factory, - ip.laboratory ip_laboratory, - ip.sample_type ip_sample_type, - ip.sample ip_sample, - ip.model ip_model, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, son_laboratory, - ip.unit ip_unit, - price, - man_hour, - man_hour_group, - inspection_item_type, - inspection_value_type, - device_group, - checkout_number, - section, - value_type, - method, - man_day, - bsm, - ask, - `last_value`, - ip.ins_result ip_ins_result, - state, - ins_sample_id, - ip.create_user ip_create_user, - ip.update_user ip_update_user, - ip.create_time ip_create_time, - ip.update_time ip_update_time, - template_id, - ipr.ins_value, - ipr.com_value, - ipr.equip_value, - ipr.equip_name, - ipr2.frequency, - ipr2.often, - ipr2.port, - ipr2.angle, - ipr2.value, - ipr2.result, - ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, - ip.method_s, - ip.tell, - ip.dic, - ip.temperature, - ip.humidity - from ins_sample isa - left join ins_product ip on isa.id = ip.ins_sample_id - left join ins_product_result ipr on ip.id = ipr.ins_product_id - left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id - where ins_order_id = #{id} - and state = 1 - and ip.son_laboratory = #{laboratory} - </select> - <select id="getSampleEn" resultType="java.lang.String"> - select name_en - from `center-lims`.product - where name = #{sample} - limit 1 - </select> - <select id="selectSampleProductListByOrderId2" resultMap="sampleDto"> - select isa.*, - ip.id ip_id, - inspection_item, - inspection_item_en, - inspection_item_subclass, - inspection_item_subclass_en, - inspection_item_class, - inspection_item_class_en, - ip.factory ip_factory, - ip.laboratory ip_laboratory, - ip.sample_type ip_sample_type, - ip.sample ip_sample, - ip.model ip_model, - son_laboratory, - ip.unit ip_unit, + ip.unit ip_unit, price, man_hour, man_hour_group, @@ -328,13 +191,13 @@ ask, tell, `last_value`, - ip.ins_result ip_ins_result, + ip.ins_result ip_ins_result, state, ins_sample_id, - ip.create_user ip_create_user, - ip.update_user ip_update_user, - ip.create_time ip_create_time, - ip.update_time ip_update_time, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, template_id, ipr.ins_value, ipr.com_value, @@ -346,13 +209,380 @@ ipr2.value, ipr2.result, ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, + ipr2.equip_name equipName2, ip.method_s from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id left join ins_product ip on isa.id = ip.ins_sample_id left join ins_product_result ipr on ip.id = ipr.ins_product_id left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id - where ins_order_id = #{id} + where isa.ins_order_id = #{id} + and state = 1 + and ios.laboratory = #{laboratory} + and (ipr2.num = ios.num or ipr2.num is null) + and (ipr.num = ios.num or ipr.num is null) + and isa.id in (select id1 + from (select is2.id id1, ip.id + from ins_sample is2 + left join ins_product ip on is2.id = + ip.ins_sample_id + where ip.id is not null) s) + order by case + when man_hour_group is NULL then 1 + when man_hour_group = '' then 1 + else 0 end, + CASE + WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� + WHEN man_hour_group REGEXP '[0-9]+' + THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� + , id asc + </select> + <select id="selectSampleProductListByOrder2Id" resultMap="sampleDto"> + select isa.*, + ios.num num1, + ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_class, + inspection_item_class_en, + inspection_item_subclass, + inspection_item_subclass_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + tell, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s + from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id + left join ins_product ip on isa.id = ip.ins_sample_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where isa.ins_order_id = #{id} + and state = 1 + and ios.laboratory = #{laboratory} + and isa.id in (select id1 + from (select is2.id id1, ip.id + from ins_sample is2 + left join ins_product ip on is2.id = + ip.ins_sample_id + where ip.id is not null) s) + order by case + when man_hour_group is NULL then 1 + when man_hour_group = '' then 1 + else 0 end, + CASE + WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� + WHEN man_hour_group REGEXP '[0-9]+' + THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� + , id asc + </select> + <select id="getInsOrderAndSample" resultMap="sampleDto"> + select isa.*, + ios.num num1, + ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_class, + inspection_item_class_en, + inspection_item_subclass, + inspection_item_subclass_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr.equip_name, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s, + ip.tell, + ip.dic, + ip.temperature, + ip.humidity + from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id + left join ins_product ip on isa.id = ip.ins_sample_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where isa.ins_order_id = #{id} + and state = 1 + and ip.son_laboratory = #{laboratory} + and ios.laboratory = #{laboratory} + and (ipr2.num = ios.num or ipr2.num is null) + and (ipr.num = ios.num or ipr.num is null) + </select> + <select id="getInsOrderAndSample2" resultMap="sampleDto"> + select isa.*, + ios.num num1, + ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_class, + inspection_item_class_en, + inspection_item_subclass, + inspection_item_subclass_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr.equip_name, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s, + ip.tell, + ip.dic, + ip.temperature, + ip.humidity + from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id + left join ins_product ip on isa.id = ip.ins_sample_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where isa.ins_order_id = #{id} + and state = 1 + and ip.son_laboratory = #{laboratory} + and ios.laboratory = #{laboratory} + </select> + <select id="getSampleEn" resultType="java.lang.String"> + select name_en + from `center-lims`.product + where name = #{sample} + limit 1 + </select> + <select id="selectSampleProductListByOrderId2" resultMap="sampleDto"> + select isa.*, + ios.num num1, + ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_subclass, + inspection_item_subclass_en, + inspection_item_class, + inspection_item_class_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + tell, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s + from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id + left join ins_product ip on isa.id = ip.ins_sample_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where isa.ins_order_id = #{id} + and ip.standard_method_list_id is not null + and state = 1 + and (ipr2.num = ios.num or ipr2.num is null) + and (ipr.num = ios.num or ipr.num is null) + order by case + when man_hour_group is NULL then 1 + when man_hour_group = '' then 1 + else 0 end, + CASE + WHEN man_hour_group REGEXP '^[0-9]' THEN CAST(man_hour_group AS UNSIGNED) -- 濡傛灉浠ユ暟瀛楀紑澶达紝鍒欐寜鐓ф暟瀛楀ぇ灏忔帓搴� + WHEN man_hour_group REGEXP '[0-9]+' + THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� + , id asc + </select> + <select id="selectSampleProductListByOrder2Id2" resultMap="sampleDto"> + select isa.*, + ios.num num1, + ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_subclass, + inspection_item_subclass_en, + inspection_item_class, + inspection_item_class_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + tell, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s + from ins_sample isa + left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id + left join ins_product ip on isa.id = ip.ins_sample_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where isa.ins_order_id = #{id} and ip.standard_method_list_id is not null and state = 1 order by case @@ -365,7 +595,6 @@ THEN CAST(SUBSTRING(man_hour_group, 2) AS UNSIGNED) END -- 鎻愬彇瀛楁瘝鍚庨潰鐨勬暟瀛楅儴鍒� , id asc </select> - <select id="selectSampleProductListByOrderId3" resultMap="sampleDto3"> select isa.id, sample_code, @@ -399,20 +628,20 @@ </select> <select id="getInsProduct1" resultMap="product"> - select ip.id ip_id, + select ip.id ip_id, inspection_item, inspection_item_en, inspection_item_class, inspection_item_class_en, inspection_item_subclass, inspection_item_subclass_en, - ip.factory ip_factory, - ip.laboratory ip_laboratory, - ip.sample_type ip_sample_type, - ip.sample ip_sample, - ip.model ip_model, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, son_laboratory, - ip.unit ip_unit, + ip.unit ip_unit, price, man_hour, man_hour_group, @@ -427,13 +656,13 @@ bsm, ask, `last_value`, - ip.ins_result ip_ins_result, + ip.ins_result ip_ins_result, state, ins_sample_id, - ip.create_user ip_create_user, - ip.update_user ip_update_user, - ip.create_time ip_create_time, - ip.update_time ip_update_time, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, template_id, ipr.ins_value, ipr.com_value, @@ -446,11 +675,13 @@ ipr2.value, ipr2.result, ipr2.equip_value equipValue2, - ipr2.equip_name equipName2, + ipr2.equip_name equipName2, ip.method_s, ip.tell, ip.dic from ins_product ip + left join ins_sample isa on ip.ins_sample_id = isa.id + left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id left join ins_product_result ipr on ip.id = ipr.ins_product_id left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id where ins_sample_id = #{id} @@ -458,7 +689,145 @@ and ip.son_laboratory = #{laboratory} and ins_fiber_id is null and ins_fibers_id is null - and standard_method_list_id is not null + and ip.standard_method_list_id is not null + and ios.laboratory = #{laboratory} + and (ipr2.num = ios.num or ipr2.num is null) + and (ipr.num = ios.num or ipr.num is null) + order by ipr.id, ipr2.id + </select> + <select id="getIns2Product1" resultMap="product"> + select ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_class, + inspection_item_class_en, + inspection_item_subclass, + inspection_item_subclass_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr.equip_name, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s, + ip.tell, + ip.dic + from ins_product ip + left join ins_sample isa on ip.ins_sample_id = isa.id + left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where ins_sample_id = #{id} + and state = 1 + and ip.son_laboratory = #{laboratory} + and ins_fiber_id is null + and ins_fibers_id is null + and ip.standard_method_list_id is not null + and ios.laboratory = #{laboratory} + order by ipr.id, ipr2.id + </select> + <select id="get2InsProduct1" resultMap="product"> + select ip.id ip_id, + inspection_item, + inspection_item_en, + inspection_item_class, + inspection_item_class_en, + inspection_item_subclass, + inspection_item_subclass_en, + ip.factory ip_factory, + ip.laboratory ip_laboratory, + ip.sample_type ip_sample_type, + ip.sample ip_sample, + ip.model ip_model, + son_laboratory, + ip.unit ip_unit, + price, + man_hour, + man_hour_group, + inspection_item_type, + inspection_value_type, + device_group, + checkout_number, + section, + value_type, + method, + man_day, + bsm, + ask, + `last_value`, + ip.ins_result ip_ins_result, + state, + ins_sample_id, + ip.create_user ip_create_user, + ip.update_user ip_update_user, + ip.create_time ip_create_time, + ip.update_time ip_update_time, + template_id, + ipr.ins_value, + ipr.com_value, + ipr.equip_value, + ipr.equip_name, + ipr2.frequency, + ipr2.often, + ipr2.port, + ipr2.angle, + ipr2.value, + ipr2.result, + ipr2.equip_value equipValue2, + ipr2.equip_name equipName2, + ip.method_s, + ip.tell, + ip.dic + from ins_product ip + left join ins_sample isa on ip.ins_sample_id = isa.id + left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id + left join ins_product_result ipr on ip.id = ipr.ins_product_id + left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id + where ins_sample_id = #{id} + and state = 1 + and ip.son_laboratory = #{laboratory} + and ins_fiber_id is null + and ins_fibers_id is null + and ip.standard_method_list_id is not null + and ios.laboratory = #{laboratory} + and ipr2.num = #{num} + and ipr.num = #{num} + order by ipr.id, ipr2.id </select> <select id="getReportModel" resultType="java.util.Map"> @@ -486,6 +855,7 @@ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="standardMethodListId" column="standard_method_list_id"/> <result property="unit" column="unit"/> + <result property="num1" column="num1"/> <collection property="insProduct" resultMap="product"/> </resultMap> @@ -618,4 +988,11 @@ from standard_method where id = (select standard_method_list_id from ins_sample where id = #{sampleId}) </select> + <select id="selectSampleList" resultType="java.util.Map"> + select DISTINCT sample_code + from ins_sample + left join ins_product ip on ins_sample.id = ip.ins_sample_id + where ins_order_id = #{orderId} + and ip.id is not null + </select> </mapper> diff --git a/inspect-server/src/main/resources/static/report-template.docx b/inspect-server/src/main/resources/static/report-template.docx index d87f13e..9c46fcd 100644 --- a/inspect-server/src/main/resources/static/report-template.docx +++ b/inspect-server/src/main/resources/static/report-template.docx Binary files differ diff --git a/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java index 1d0ad90..1daf064 100644 --- a/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java +++ b/user-server/src/main/java/com/yuanchu/mom/mapper/UserMapper.java @@ -24,4 +24,6 @@ User getCustom(Integer userId); List<User> getUser(); + + String selectDepartLims(String prepareUser); } 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 f47fbe9..2ff6b56 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 @@ -162,7 +162,6 @@ user.setPhone(person.getPhoneNumber()); user.setEmail(person.getCompanyEmail()); user.setIsCustom(person.getCompanyId().equals("SC2463") ? 0 : 1); -// user.setPassword(DigestUtils.md5DigestAsHex(headerToken.getPassword(person.getEmployeeID()).getBytes())); user.setPassword(DigestUtils.md5DigestAsHex("zttZTT123!".getBytes())); user.setCompany(BeanUtil.isNotEmpty(custom) ? (custom.getId() + "") : companyName); user.setAddress("鏈~鍐�"); diff --git a/user-server/src/main/resources/mapper/UserMapper.xml b/user-server/src/main/resources/mapper/UserMapper.xml index 2ba5d0e..2dee8aa 100644 --- a/user-server/src/main/resources/mapper/UserMapper.xml +++ b/user-server/src/main/resources/mapper/UserMapper.xml @@ -48,4 +48,8 @@ select * from user where state = 1 # where depart_lims_id=FIND_IN_SET(depart_lims_id, (select GROUP_CONCAT(id SEPARATOR ',') from department_lims where department_lims.name like '%瀹為獙瀹�')) </select> + <select id="selectDepartLims" resultType="java.lang.String"> + select name from department_lims + where id= (select SUBSTRING_INDEX(SUBSTRING_INDEX(depart_lims_id, ',', -2), ',', 1) AS depart_lims_id from user where name=#{prepareUser}) + </select> </mapper> \ No newline at end of file -- Gitblit v1.9.3