From a14a26c04bc5863248b9a9d387610a143c3a4efd Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期五, 27 九月 2024 08:51:34 +0800 Subject: [PATCH] 电路站点报告ing --- user-server/src/main/java/com/yuanchu/mom/controller/UserController.java | 4 user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java | 2 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsProductResult2.java | 2 user-server/src/main/java/com/yuanchu/mom/service/CustomService.java | 2 inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 215 ++++++++++++++++++++++++++ inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java | 3 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 185 ++++++++++++++-------- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 6 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java | 20 ++ inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java | 10 + 10 files changed, 368 insertions(+), 81 deletions(-) diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java index 9b551c6..0772bc0 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 @@ -225,10 +225,24 @@ } @ValueClassify("妫�楠屼换鍔�") - @ApiOperation(value = "鎵爜鎶ユ") + @ApiOperation(value = "鎵爜鎶ユ(鍏ュ簱)") @PostMapping("/scanInsOrderState") - public Result scanInsOrderState(String sonLaboratory,String sampleCode) { - return Result.success(insOrderPlanService.scanInsOrderState(sonLaboratory,sampleCode)); + public Result scanInsOrderState(String sonLaboratory,String sampleCode,String trees) { + return Result.success(insOrderPlanService.scanInsOrderState(sonLaboratory,sampleCode,trees)); + } + + @ValueClassify("妫�楠屼换鍔�") + @ApiOperation(value = "鎵爜鍑哄簱") + @PostMapping("/outInsOrderState") + public Result outInsOrderState(String sonLaboratory,String sampleCode) { + return Result.success(insOrderPlanService.outInsOrderState(sonLaboratory,sampleCode)); + } + + @ValueAuth + @PostMapping("/preview") + @ApiOperation("棰勮鏂囦欢") + public Result<?> preview(Integer id)throws Exception { + return Result.success(insOrderPlanService.preview(id)); } } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java index f62df21..db2f535 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrder.java @@ -249,5 +249,8 @@ @ApiModelProperty("涓嬪彂瀵硅薄(闄や簡鍏朵粬鎴愬搧澶栬繖涓瓧娈靛繀閫�,鐢ㄤ簬浼佷笟寰俊鎺ㄩ��)") private Integer issueUser; + @ApiModelProperty("闆朵欢鍙�(鍏朵粬鎴愬搧杩欎釜瀛楁闇�瑕佸~鍐欑殑淇℃伅)") + private String partNo; + } 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 e6c7390..d510e48 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 @@ -74,7 +74,7 @@ @ApiModelProperty("鍊�") private String value; - @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸") + @ApiModelProperty("缁撹 0涓嶅悎鏍� 1鍚堟牸 3涓嶅垽瀹�") private Integer result; /** 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 9c750eb..94e9cb8 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 @@ -51,8 +51,14 @@ int deleteInsContext(InsProductResultVo insProductResultVo); - //鎵爜鎶ユ - int scanInsOrderState(String sonLaboratory, String sampleCode); + //鎵爜鎶ユ(鍏ュ簱) + int scanInsOrderState(String sonLaboratory, String sampleCode,String trees); + + //鎵爜鍑哄簱 + int outInsOrderState(String sonLaboratory, String sampleCode); List<InsOrderUser> getInsOrderUserList(Integer insOrderStateId); + + //棰勮鏂囦欢 + Object preview(Integer id) throws Exception; } 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 c769d0c..7a7057f 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 @@ -37,6 +37,7 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.*; import org.springframework.beans.factory.annotation.Value; @@ -95,11 +96,17 @@ @Resource private WarehouseHistoryMapper warehouseHistoryMapper; + @Resource + private WarehouseService warehouseService; + @Value("${wordUrl}") private String wordUrl; @Value("${twoCode}") private String twoCode; + + @Resource + WordUtils wordUtils; @Resource private InsReportMapper insReportMapper; @@ -142,13 +149,9 @@ Map<String, Object> map = new HashMap<>(); map.put("head", PrintChina.printChina(InsOrderPlanVO.class)); Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null); - User user = userMapper.selectById(map1.get("userId"));//褰撳墠鐧诲綍鐨勪汉 - String laboratory = null; String userName = null; - Integer userId = null; if (ObjectUtil.isNotEmpty(insOrderPlanDTO.getUserId())) { - userId = map1.get("userId"); userName = userMapper.selectById(map1.get("userId")).getName(); insOrderPlanDTO.setUserId(null); } @@ -340,7 +343,10 @@ //鎵爜鎶ユ @Override - public int scanInsOrderState(String sonLaboratory, String sampleCode) { + public int scanInsOrderState(String sonLaboratory, String sampleCode, String trees) { + /*鏍峰搧鍏ュ簱*/ + warehouseService.inWarehouse(trees, sampleCode); + /*鏂板妫�楠屼换鍔�*/ //鍏堝垽鏂璁㈠崟鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode)); List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() @@ -367,9 +373,9 @@ orderState.setInsState(0); orderState.setNum(orderState.getNum() + 1);//閫掑 insOrderStateMapper.updateById(orderState); - } else { + } /*else { throw new ErrorException("璇ヨ鍗曠珯鐐圭殑浠诲姟宸插垱寤�,鏃犳硶鍐嶆鍒涘缓!"); - } + }*/ } else { InsOrderState insOrderState = new InsOrderState(); insOrderState.setInsOrderId(insSample.getInsOrderId()); @@ -381,9 +387,90 @@ return 1; } + //鎵爜鍑哄簱 + @Override + public int outInsOrderState(String sonLaboratory, String sampleCode) { + //鍒ゆ柇璇ユ牱鍝佺殑妫�楠屼换鍔℃槸鍚﹀凡缁忕粨鏉�(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + //鍏堝垽鏂璁㈠崟鏄惁鏈夎繖涓珯鐐圭殑椤圭洰 + InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode)); + List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery() + .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList()); + List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getState, 1) + .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList()); + if (!collect.contains(sonLaboratory)) { + throw new ErrorException("璇ヨ鍗曟病鏈�" + sonLaboratory + "绔欑偣鐨勭浉鍏抽」鐩�,璇锋煡鐪嬩笅鍗曡鎯�!"); + } + //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId()) + .and(wrapper -> wrapper + .eq(InsOrderState::getInsState, 5) + .or() + .eq(InsOrderState::getInsState, 6) + )); + if (CollectionUtils.isEmpty(orderStates)) { + throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙,鏆傛椂鏃犳硶鍑哄簱!"); + } + warehouseService.outWarehouse(sampleCode); + return 0; + } + @Override public List<InsOrderUser> getInsOrderUserList(Integer insOrderStateId) { return insOrderUserMapper.getInsOrderUserList(insOrderStateId); + } + + private static final String splitIdentifier = "@-@"; // 鑷畾涔夊敮涓�鏍囪瘑鍒嗗壊绗� + + //棰勮鏂囦欢 + @Override + public Object preview(Integer id) throws Exception { + InsOrderFile insOrderFile = insOrderFileMapper.selectById(id); + File file = new File(wordUrl + "/" + insOrderFile.getFileUrl()); + StringBuilder stringBuilder = new StringBuilder(); + // 鍒涘缓 reader + try (BufferedReader br = Files.newBufferedReader(file.toPath())) { + // CSV鏂囦欢鐨勫垎闅旂 + String DELIMITER = ","; + // 鎸夎璇诲彇 + String line; + while ((line = br.readLine()) != null) { + // 鍒嗗壊 + String[] columns = line.split(DELIMITER); + // 鎵撳嵃琛� + stringBuilder.append(String.join(splitIdentifier, columns)).append("\n"); + } + } catch (Exception ex) { + List<Object> list = new ArrayList<>(); + //鍒涘缓宸ヤ綔绨垮璞� + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(file)); + //鑾峰彇宸ヤ綔绨夸笅sheet鐨勪釜鏁� 鍙鍙栫涓�涓猻heet + int sheetNum = xssfWorkbook.getNumberOfSheets(); + //閬嶅巻宸ヤ綔绨夸腑鐨勬墍鏈夋暟鎹� + for (int i = 0; i < sheetNum; i++) { + Map<String, Object> map = new HashMap<>(); + StringBuilder result = new StringBuilder(); + XSSFSheet sheet = xssfWorkbook.getSheetAt(i); + //鑾峰彇鏈�鍚庝竴琛岀殑num锛屽嵆鎬昏鏁般�傛澶勪粠0寮�濮� + int maxRow = sheet.getLastRowNum(); + for (int row = 0; row <= maxRow; row++) { + //鑾峰彇鏈�鍚庡崟鍏冩牸num锛屽嵆鎬诲崟鍏冩牸鏁� ***娉ㄦ剰锛氭澶勪粠1寮�濮嬭鏁�*** + int maxRol = sheet.getRow(row).getLastCellNum(); + StringBuilder aLine = new StringBuilder(); + for (int rol = 0; rol < maxRol; rol++) { + aLine.append(sheet.getRow(row).getCell(rol)).append(","); + } + String substring = aLine.substring(0, aLine.length() - 1); + result.append(substring).append("\n"); + } + map.put("sheetName", sheet.getSheetName()); + map.put("content", result.toString()); + list.add(map); + } + return list; + } + return stringBuilder.toString(); } @@ -662,6 +749,9 @@ int ressult = 1; String valueStr = insProductResult2.getValue(); if (!insProduct.getAsk().contains(",")) { + if (insProduct.getAsk().equals("/")) { + ressult = 3; //涓嶅垽瀹� + } if (!isValueValid(valueStr, new String[]{insProduct.getAsk()})) { ressult = 0; //涓嶅悎鏍� } @@ -673,7 +763,6 @@ String[] askSplit = s.split("掳"); String angleKey = askSplit[0]; String angleValue = askSplit[1]; - for (int i = 0; i < angles.length; i++) { if (angles[i].split("掳")[0].equals(angleKey)) { try { @@ -692,7 +781,6 @@ } finally { continue; } - } } } @@ -918,8 +1006,7 @@ .set(InsOrderUser::getTell, tell)); switch (type) { case 0: - /*鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛�*/ - //鏇存柊鍘熸潵鐨勬楠屼换鍔� + //鍐嶆璇曢獙:璇ュ崟瀛愰��鍥炲埌妫�楠岀姸鎬�(鎺掑簭鏀规垚褰撳墠鐨勬渶鍚�),娆℃暟閫掑(淇濈暀浠ュ墠鐨勬暟鎹�)锛� insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getId, record.getId()) .set(InsOrderState::getInsTime, now) @@ -930,7 +1017,7 @@ .set(InsOrderState::getCreateTime, LocalDateTime.now())); break; case 1: - //缁х画璇曢獙:鍒欑户缁皢妫�楠屼换鍔¤浆鎺ヨ嚦涓嬩竴绔欑偣锛� + //缁х画璇曢獙:璇ョ珯鐐逛换鍔$粨鏉�(鍙互鍐嶆鎵爜妫�楠�)锛� insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, orderId) .eq(InsOrderState::getLaboratory, laboratory) @@ -940,7 +1027,7 @@ .set(InsOrderState::getVerifyUser, userId)); break; case 2: - //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙锛岀洿鎺ョ敓鎴愭渶缁堟姤鍛婂拰璐圭敤缁熻銆� + //缁撴潫璇曢獙:姝ゅ鎵樺崟鍋滄璇曢獙(鏃犳硶鍐嶆妫�楠�)銆� insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate() .eq(InsOrderState::getInsOrderId, orderId) .eq(InsOrderState::getLaboratory, laboratory) @@ -957,52 +1044,7 @@ break; } } - /*澶嶆牳瀹屾垚涔嬪悗鐢熸垚浠栬嚜宸辩殑绔欑偣鎶ュ憡(浠呴檺杈愬皠璇曢獙妫�娴�(杩戝満,杩滃満)鍜岀數璺瘯楠�)*/ - /*switch (laboratory) { - case "杩戝満": - uploadFile(orderId, null); - break; - case "杩滃満": - uploadFile(orderId, null); - break; - case "鐢佃矾璇曢獙": - uploadFile(orderId, generateExcelFile(orderId,laboratory)); - break; - default: - break; - }*/ return 1; - } - - //鐢熸垚鐢佃矾璇曢獙鐨別xcel鏂囦欢 - private MultipartFile generateExcelFile(Integer orderId, String laboratory) throws IOException { - // 鍒涘缓涓�涓猈orkbook瀵硅薄 - Workbook workbook = new XSSFWorkbook(); - - // 鍒涘缓绗竴涓猄heet - Sheet sheet1 = workbook.createSheet("Sheet1"); - Row row1 = sheet1.createRow(0); - Cell cell1 = row1.createCell(0); - cell1.setCellValue("Hello, Sheet1"); - - // 鍒涘缓绗簩涓猄heet - Sheet sheet2 = workbook.createSheet("Sheet2"); - Row row2 = sheet2.createRow(0); - Cell cell2 = row2.createCell(0); - cell2.setCellValue("Hello, Sheet2"); - - // 灏哤orkbook鍐欏叆鍒板瓧鑺傛暟缁勪腑 - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - workbook.write(outputStream); - workbook.close(); - - byte[] excelBytes = outputStream.toByteArray(); - - // 鍒涘缓MultipartFile瀵硅薄 - MultipartFile multipartFile = new MockMultipartFile( - "file", "example.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", new ByteArrayInputStream(excelBytes)); - - return multipartFile; } private void getTemplateThing(Set<Integer> set, Map<Integer, String> map2, List<InsProduct> insProducts) { @@ -1094,15 +1136,15 @@ .set(InsOrderState::getInsTime, LocalDateTime.now()) .set(InsOrderState::getInsState, 3) .set(InsOrderState::getVerifyUser, verifyUser)); - /*濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/ - InsOrder insOrder = insOrderMapper.selectById(orderId); - if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) { - try { - verifyPlan(orderId, laboratory, 2, null); - } catch (IOException e) { - e.printStackTrace(); - } - } else { + /*杩欎釜鎯呭喌鍏堝叧闂�----濡傛灉鏄疌绫昏鍗曚笖鏄笅鍙戝埌璐ㄩ噺閮�,鍒欑洿鎺ュ鏍搁�氳繃(缁撴潫璇曢獙)*/ +// InsOrder insOrder = insOrderMapper.selectById(orderId); +// if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("璐ㄩ噺閮�")) { +// try { +// verifyPlan(orderId, laboratory, 2, null); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } else { Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId"); //LIMS绯荤粺娑堟伅鎺ㄩ�� InformationNotification info = new InformationNotification(); @@ -1130,7 +1172,7 @@ map.put("enable_id_trans", 0);//鏄惁寮�鍚痠d杞瘧.0鍚� map.put("enable_duplicate_check", 0);//鏄惁寮�鍚噸澶嶆秷鎭鏌�.0鍚� qywxApi.send(map);*/ - } +// } //澶嶆牳浜�--妫�楠屽崟鐩稿叧璐熻矗浜� InsSampleUser insSampleUser = new InsSampleUser(); insSampleUser.setUserId(verifyUser); @@ -1153,6 +1195,11 @@ } return null; }); + /*鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛婂苟涓婁紶鍒伴檮浠朵腑*/ + /*if (laboratory.equals("鐢佃矾璇曢獙")) { + MultipartFile file = wordUtils.generateWord(note, term, orderState); + uploadFile(orderId,file); + }*/ // 鍒犻櫎鏁伴噰閲囬泦娆℃暟 String key = "frequency" + ":" + entrustCode + ":*"; RedisUtil.delsLike(key); @@ -1194,4 +1241,6 @@ return "鏈煡"; } } + + } 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 58e6d5f..efcae29 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 @@ -124,7 +124,7 @@ public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) { InsOrder insOrder = new InsOrder(); insOrder.setId(orderId); - insOrder.setAppointed(LocalDate.parse(appointed)); + //insOrder.setAppointed(LocalDate.parse(appointed)); insOrder.setSendTime(LocalDateTime.now()); insOrderMapper.updateById(insOrder); //淇敼鎴愬彧缁欏綋鍓嶉�夋嫨鐨勮瘯楠屽涓嬪彂鍗曞瓙 @@ -271,9 +271,9 @@ if (insOrder.getState() == 1) { //瀹℃牳閫氳繃鎵嶄細鐢熸垚濮旀墭缂栧彿 insOrder.setEntrustCode(giveCode.giveCode2("WT-", "ins_order", "-", "yyMMdd")); - int day = insProductService.selectOrderManDay(insOrder.getId());//棰勮瀹屾垚鏃堕棿 //纭畾璁㈠崟鐨勪笅鍙戞椂闂村拰绾﹀畾鏃堕棿 - insOrder.setAppointed(LocalDate.parse(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))); + //int day = insProductService.selectOrderManDay(insOrder.getId());//棰勮瀹屾垚鏃堕棿 + //insOrder.setAppointed(LocalDate.parse(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))); insOrder.setSendTime(LocalDateTime.now()); /*todo 鏍规嵁璁㈠崟绫诲瀷鍒ゆ柇鏄惁闇�瑕佹帹閫佷紒涓氬井淇� @zss*/ if (!order.getFormType().equals("鍏朵粬鎴愬搧")) { diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java new file mode 100644 index 0000000..b0e467e --- /dev/null +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -0,0 +1,215 @@ +package com.yuanchu.mom.utils; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.yuanchu.mom.controller.InsOrderPlanController; +import com.yuanchu.mom.mapper.*; +import com.yuanchu.mom.pojo.InsOrderState; +import com.yuanchu.mom.pojo.InsProduct; +import com.yuanchu.mom.pojo.InsProductResult2; +import com.yuanchu.mom.pojo.InsSample; +import com.yuanchu.mom.service.impl.InsOrderPlanServiceImpl; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.Collectors; + +@Component +public class WordUtils { + + @Resource + private InsOrderMapper insOrderMapper; + + @Resource + private InsOrderStateMapper insOrderStateMapper; + + @Resource + private InsSampleMapper insSampleMapper; + + @Resource + private InsProductMapper insProductMapper; + + @Resource + private InsProductResult2Mapper insProductResult2Mapper; + + private void writeText(XWPFParagraph xwpfParagraph, String text, Integer size, String bold) { + // 鍒涘缓鏂扮殑鏂囨湰杩愯 + XWPFRun run = xwpfParagraph.createRun(); + // 璁剧疆鏂扮殑鏁版嵁 + run.setText(text); + if (ObjectUtils.isNotEmpty(size)) { + run.setFontSize(size); + } + if (ObjectUtils.isNotEmpty(bold)) { + run.setBold(true); + } + } + + //鐢熸垚鐢佃矾璇曢獙鐨勭珯鐐规姤鍛� + public MultipartFile generateWord(String note, String term, InsOrderState insOrderState) { + AtomicInteger index = new AtomicInteger(); + // 鍒涘缓涓�涓┖鐨刉ord鏂囨。 + XWPFDocument document = new XWPFDocument(); + //鍒涘缓涓�涓钀芥爣棰� + XWPFParagraph paragraph = document.createParagraph(); + writeText(paragraph, term + "鐢佃矾鍙傛暟", 20, "鍔犵矖"); + + //鏌ヨ鏍峰搧 + List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, insOrderState.getInsOrderId())); + insSamples.forEach(insSample -> { + //鏌ヨ椤圭洰 + List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery() + .eq(InsProduct::getInsSampleId, insSample.getId()) + .eq(InsProduct::getSonLaboratory, "鐢佃矾璇曢獙")); + //鑾峰彇鏈�澶х鍙f暟閲�,瑙掑害鏁伴噺,棰戞鏁伴噺 + List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery() + .eq(InsProductResult2::getNum, insOrderState.getNum()) + .in(InsProductResult2::getInsProductId, insProducts.stream().map(InsProduct::getId).collect(Collectors.toList()))); + int ports = 0; + int angles = 0; + for (InsProductResult2 insProductResult2 : insProductResult2s) { + if (insProductResult2.getPort().split(",").length > ports) { + ports = insProductResult2.getPort().split(",").length; + } + if (insProductResult2.getAngle().split(",").length > angles) { + angles = insProductResult2.getAngle().split(",").length; + } + } + List<String> frequencyses = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList()); + int frequencys = frequencyses.size(); + List<String> inspectionItemSubclass = insProducts.stream().map(InsProduct::getInspectionItemSubclass).collect(Collectors.toList()); + //鍏堝垽鏂槸1绠�鍗曠増杩樻槸0澶嶆潅鐗� + if (insOrderState.getVersion() == 1) { + //(鍒楁暟鏄鍙f暟+6,琛屾暟鏄�(椹绘尝姣�*2+闅旂搴�+浜掕皟*(瑙掑害+1)+1)*棰戞+1) + int portRow = ports % 8 == 0 ? ports / 8 : ports / 8 + 1; + //琛屾暟 + int rows = 0; + if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) { + rows += 2 * portRow; + } + if (inspectionItemSubclass.contains("鍚屾瀬鍖栭殧绂诲害")) { + rows += 1 * portRow; + } + if (inspectionItemSubclass.contains("寮傛瀬鍖栭殧绂诲害")) { + rows += 1 * portRow; + } + if (inspectionItemSubclass.contains("浜掕皟")) { + rows += (angles + 1) * portRow; + } + //鍒楁暟 + int cols = ports > 8 ? 14 : ports + 6; + //鍒涘缓涓�涓〃鏍� + XWPFTable table = document.createTable((rows + 1) * frequencys + 1, cols); + // 濉厖琛ㄦ牸鍐呭 + for (int rowIndex = 0; rowIndex < (rows + 1) * frequencys + 1; rowIndex++) { + XWPFTableRow row = table.getRow(rowIndex); + for (int colIndex = 0; colIndex < cols; colIndex++) { + XWPFTableCell cell = row.getCell(colIndex); + if (rowIndex == 0) { + //绗竴琛� + if (colIndex == 0) { + //绗竴鍒� + cell.setText("搴忓彿"); + } else if (colIndex == 1) { + //绗簩鍒� + cell.setText("妫�楠岄」鐩�"); + } else if (colIndex == 2) { + //绗笁鍒� + cell.setText("鍗曚綅"); + } else if (colIndex == 3) { + //绗洓鍒� + cell.setText("鏍囧噯涓庤姹�"); + } else if (colIndex == cols - 1) { + //鏈�鍚庝竴鍒� + cell.setText("妫�楠岀粨璁�"); + } else if (colIndex == 4){ + //鍏朵綑鍒� + cell.setText("妫�楠岀粨鏋�"); + } + } + else if (rowIndex == 1 || rowIndex % (rows + 1) == 1) { + if (colIndex==0) { + //棰戞鎵�鍦ㄨ + cell.setText("棰戞锛�" + frequencyses.get(rowIndex / (rows + 1))); + } + } + else { + //portRow绔彛琛屾暟 + if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) { + + } + if (inspectionItemSubclass.contains("鍚屾瀬鍖栭殧绂诲害")) { + + } + if (inspectionItemSubclass.contains("寮傛瀬鍖栭殧绂诲害")) { + + } + if (inspectionItemSubclass.contains("浜掕皟")) { + + } + } + } + if (rowIndex == 0) { + //绗竴琛岀殑妯悜鍚堝苟 + mergeCellsHorizontal(row, 4, cols - 2); + } else if (rowIndex == 1 || rowIndex % (rows + 1) == 1) { + //棰戞琛岀殑妯悜鍚堝苟 + mergeCellsHorizontal(row, 0, cols - 1); + } + } + } else { + + } + }); + // 鍐欏叆鍒版枃浠� + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + try { + document.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } + byte[] bytes = outputStream.toByteArray(); + return new MockMultipartFile(term + "鐢佃矾鍙傛暟", term + "鐢佃矾鍙傛暟.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", bytes); + } + + // 绔栧悜鍚堝苟鍗曞厓鏍� + private static void mergeCellsVertical(XWPFTable table, int columnIndex, int fromRow, int toRow) { + for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) { + if (rowIndex == fromRow) { + // 绗竴涓崟鍏冩牸淇濈暀锛岃涓哄悎骞惰捣濮� + CTTcPr tcPr = table.getRow(rowIndex).getCell(columnIndex).getCTTc().addNewTcPr(); + tcPr.addNewVMerge().setVal(STMerge.RESTART); + } else { + // 闈炵涓�涓崟鍏冩牸璁句负鍚堝苟缁х画 + CTTcPr tcPr = table.getRow(rowIndex).getCell(columnIndex).getCTTc().addNewTcPr(); + tcPr.addNewVMerge().setVal(STMerge.CONTINUE); + } + } + } + + // 妯悜鍚堝苟鍗曞厓鏍� + private static void mergeCellsHorizontal(XWPFTableRow row, int fromCell, int toCell) { + for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) { + if (cellIndex == fromCell) { + // 绗竴涓崟鍏冩牸淇濈暀锛岃涓哄悎骞惰捣濮� + CTTcPr tcPr = row.getCell(cellIndex).getCTTc().addNewTcPr(); + tcPr.addNewHMerge().setVal(STMerge.RESTART); + } else { + // 闈炵涓�涓崟鍏冩牸璁句负鍚堝苟缁х画 + CTTcPr tcPr = row.getCell(cellIndex).getCTTc().addNewTcPr(); + tcPr.addNewHMerge().setVal(STMerge.CONTINUE); + } + } + } + +} diff --git a/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java index ed6f090..dd6bf5b 100644 --- a/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java +++ b/user-server/src/main/java/com/yuanchu/mom/controller/UserController.java @@ -153,8 +153,8 @@ @ValueClassify("瀹㈡埛绠$悊") @ApiOperation(value = "鍒犻櫎瀹㈡埛淇℃伅") @PostMapping("/delCustomById") - public Result<?> delCustomById(Integer id) { - return Result.success(customService.delCustomById(id)); + public Result<?> delCustomById(Long id) { + return Result.success(customService.removeById(id)); } @ValueClassify("瀹㈡埛绠$悊") @ApiOperation(value = "鏂板瀹㈡埛淇℃伅") diff --git a/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java b/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java index deff15f..2f31e96 100644 --- a/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java +++ b/user-server/src/main/java/com/yuanchu/mom/service/CustomService.java @@ -16,7 +16,7 @@ Map<String, Object> selectCustomPageList(IPage<Custom> page, Custom custom); - int delCustomById(Integer id); + int delCustomById(Long id); int addCustom(Custom custom); diff --git a/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java b/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java index acc4995..db8d859 100644 --- a/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java +++ b/user-server/src/main/java/com/yuanchu/mom/service/impl/CustomServiceImpl.java @@ -41,7 +41,7 @@ } @Override - public int delCustomById(Integer id) { + public int delCustomById(Long id) { return customMapper.deleteById(id); } -- Gitblit v1.9.3