From a00890e840b80a741f62eb6cb31b46f13be6202f Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期四, 24 十月 2024 16:46:45 +0800 Subject: [PATCH] 附件调试修改+辐射站点报告生成 --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderFileServiceImpl.java | 16 + inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml | 5 inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java | 4 inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java | 124 ++++++++ inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java | 6 inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 24 - inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java | 52 ++ inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 6 inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml | 12 inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java | 443 +++++++++++++++++++++++++++++ inspect-server/src/main/java/com/yuanchu/mom/service/WarehouseService.java | 2 inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java | 2 inspect-server/src/main/resources/mapper/InsOrderMapper.xml | 81 ++-- inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java | 58 +++ inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderFileService.java | 1 inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java | 28 inspect-server/src/main/java/com/yuanchu/mom/dto/Exceldata.java | 14 inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java | 2 18 files changed, 768 insertions(+), 112 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 0036898..88e2c02 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 @@ -89,7 +89,7 @@ @ValueClassify("妫�楠屼换鍔�") @ApiOperation(value = "浠诲姟浜ゆ帴") @PostMapping("/upPlanUser") - public Result<?> upPlanUser(Integer userId, Integer orderId,String sonLaboratory) { + public Result<?> upPlanUser(Integer userId, Integer orderId, String sonLaboratory) { return Result.success(insOrderPlanService.upPlanUser(userId, orderId, sonLaboratory)); } @@ -132,9 +132,9 @@ @ApiOperation(value = "淇濆瓨妫�楠屽唴瀹�") @PostMapping("/saveInsContext") @ValueAuth - public Result<?> saveInsContext(String param,Integer num) { + public Result<?> saveInsContext(String param, Integer num) { Map<String, Object> param2 = JSON.parseObject(param, Map.class); - insOrderPlanService.saveInsContext(param2,num); + insOrderPlanService.saveInsContext(param2, num); return Result.success(); } @@ -165,15 +165,15 @@ @ValueClassify("妫�楠屼换鍔�") @ApiOperation(value = "涓婁紶闄勪欢") @PostMapping("/uploadFile") - public Result<?> uploadFile(Integer orderId, MultipartFile file) { - return Result.success(insOrderPlanService.uploadFile(orderId, file)); + public Result<?> uploadFile(Integer orderId, MultipartFile file, String sonLaboratory) { + return Result.success(insOrderPlanService.uploadFile(orderId, file, sonLaboratory)); } @ValueClassify("妫�楠屼换鍔�") @ApiOperation(value = "鍒犻櫎闄勪欢") @PostMapping("/delfile") public Result<?> delfile(Integer id) { - return Result.success(insOrderFileService.removeById(id)); + return Result.success(insOrderFileService.delfile(id)); } @ValueAuth @@ -212,7 +212,7 @@ @ApiOperation(value = "鐢佃矾璇曢獙鐐瑰嚮妫�楠岄�夋嫨鐗堟湰") @PostMapping("/chooseVersion") @ValueAuth - public Result<?> chooseVersion(Integer orderStateId,Integer version) { + public Result<?> chooseVersion(Integer orderStateId, Integer version) { InsOrderState orderState = new InsOrderState(); orderState.setId(orderStateId); orderState.setVersion(version); @@ -229,28 +229,28 @@ @ValueAuth @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)); + public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request, Integer num) { + return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request, num)); } @ValueClassify("妫�楠屼换鍔�") @ApiOperation(value = "鎵爜鎶ユ(鍏ュ簱)") @PostMapping("/scanInsOrderState") - public Result scanInsOrderState(String sonLaboratory,String sampleCode,String trees) { - return Result.success(insOrderPlanService.scanInsOrderState(sonLaboratory,sampleCode,trees)); + 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)); + 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 { + public Result<?> preview(Integer id) throws Exception { return Result.success(insOrderPlanService.preview(id)); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java index c656864..7f62740 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/controller/WarehouseController.java @@ -27,7 +27,7 @@ return Result.success(warehouseService.addWarehouse(name)); } - @ValueAuth + @ValueClassify("鏍峰搧绠$悊") @GetMapping("/selectWarehouse") @ApiOperation("鏌ヨ浠撳簱") public Result selectWarehouse() { @@ -85,8 +85,8 @@ @ValueClassify("鏍峰搧绠$悊") @PostMapping("/outWarehouse") @ApiOperation("鏍峰搧鍑哄簱") - public Result outWarehouse(String sampleCode) { - return Result.success(warehouseService.outWarehouse(sampleCode)); + public Result outWarehouse(String sampleCode, boolean a) { + return Result.success(warehouseService.outWarehouse(sampleCode,a)); } @ValueAuth diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/Exceldata.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/Exceldata.java new file mode 100644 index 0000000..00fab8e --- /dev/null +++ b/inspect-server/src/main/java/com/yuanchu/mom/dto/Exceldata.java @@ -0,0 +1,14 @@ +package com.yuanchu.mom.dto; + +import lombok.Data; + +import java.util.Map; + +@Data +public class Exceldata { + + private Map<Integer, Object> project ; + + private Map<String,Object> dataRow; + +} diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java index bd53c37..6dfe1c7 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java @@ -17,5 +17,5 @@ */ public interface InsOrderFileMapper extends BaseMapper<InsOrderFile> { - IPage<InsOrderFile> getFileList(@Param("page") Page page, @Param("ew") QueryWrapper<InsOrderFile> ew , @Param("insOrderId") Integer insOrderId); + IPage<InsOrderFile> getFileList(@Param("page") Page page, @Param("ew") QueryWrapper<InsOrderFile> ew , @Param("insOrderId") Integer insOrderId, @Param("sonLaboratory") String sonLaboratory); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java index 0aa3a66..cfee659 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java @@ -65,4 +65,8 @@ @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; + + @ApiModelProperty("鎵�灞炵珯鐐�") + @ValueTableShow(6) + private String sonLaboratory; } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderFileService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderFileService.java index 832ce74..dae472c 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderFileService.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderFileService.java @@ -12,4 +12,5 @@ * @since 2024-06-06 10:08:21 */ public interface InsOrderFileService extends IService<InsOrderFile> { + int delfile(Integer id); } 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 8ccd69b..640c48b 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 @@ -47,7 +47,7 @@ Map<String,Object> getFileList(Page page, InsOrderFile insOrderFile); - int uploadFile(Integer orderId, MultipartFile file); + int uploadFile(Integer orderId, MultipartFile file,String sonLaboratory); List<String> upPlanUser2(Integer orderId); diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/WarehouseService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/WarehouseService.java index 6d44c60..59d6501 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/WarehouseService.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/WarehouseService.java @@ -34,7 +34,7 @@ int inWarehouse(String trees, String sampleCode); - int outWarehouse(String sampleCode); + int outWarehouse(String sampleCode, boolean a); Map<String, Object> getSampleRecord(Integer id); diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderFileServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderFileServiceImpl.java index 5c1c780..6fd217d 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderFileServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderFileServiceImpl.java @@ -20,4 +20,20 @@ */ @Service public class InsOrderFileServiceImpl extends ServiceImpl<InsOrderFileMapper, InsOrderFile> implements InsOrderFileService { + + @Resource + private InsOrderFileMapper insOrderFileMapper; + + @Value("${wordUrl}") + private String wordUrl; + + //鍒犻櫎闄勪欢 + @Override + public int delfile(Integer id) { + InsOrderFile insOrderFile = insOrderFileMapper.selectById(id); + File file = new File(wordUrl + "/" + insOrderFile.getFileUrl()); + file.delete(); + insOrderFileMapper.deleteById(id); + return 0; + } } 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 fbd5a82..52ce93f 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 @@ -129,6 +129,9 @@ @Resource private InsOrderFileMapper insOrderFileMapper; + @Resource + FuSheUtils fuSheUtils; + @Override public Map<String, Object> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) { Map<String, Object> map = new HashMap<>(); @@ -290,13 +293,18 @@ map.put("head", PrintChina.printChina(InsOrderFile.class)); Integer insOrderId = insOrderFile.getInsOrderId(); insOrderFile.setInsOrderId(null); - IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId); + String sonLaboratory = null; + if (ObjectUtils.isNotEmpty(insOrderFile.getSonLaboratory())) { + sonLaboratory = insOrderFile.getSonLaboratory(); + insOrderFile.setSonLaboratory(null); + } + IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId, sonLaboratory); map.put("body", insOrderFileIPage); return map; } @Override - public int uploadFile(Integer orderId, MultipartFile file) { + public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory) { String urlString; String pathName; String path; @@ -319,16 +327,39 @@ if (!realpath.exists()) { realpath.mkdirs(); } - pathName = UUID.randomUUID() + "_" + file.getOriginalFilename(); + pathName = file.getOriginalFilename(); urlString = realpath + "/" + pathName; file.transferTo(new File(urlString)); insOrderFile.setFileUrl(pathName); - return insOrderFileMapper.insert(insOrderFile); + if (ObjectUtils.isNotEmpty(sonLaboratory)) { + insOrderFile.setSonLaboratory(sonLaboratory); + //鍒犻櫎閲嶅鐨勬暟鎹� + insOrderFileMapper.delete(Wrappers.<InsOrderFile>lambdaQuery() + .eq(InsOrderFile::getInsOrderId, orderId) + .eq(InsOrderFile::getType, insOrderFile.getType()) + .eq(InsOrderFile::getFileName, insOrderFile.getFileName()) + .eq(InsOrderFile::getSonLaboratory, insOrderFile.getSonLaboratory()) + .eq(InsOrderFile::getFileUrl, insOrderFile.getFileUrl())); + } else { + //鍒犻櫎閲嶅鐨勬暟鎹� + insOrderFileMapper.delete(Wrappers.<InsOrderFile>lambdaQuery() + .eq(InsOrderFile::getInsOrderId, orderId) + .eq(InsOrderFile::getType, insOrderFile.getType()) + .eq(InsOrderFile::getFileName, insOrderFile.getFileName()) + .isNull(InsOrderFile::getSonLaboratory) + .eq(InsOrderFile::getFileUrl, insOrderFile.getFileUrl())); + } + insOrderFileMapper.insert(insOrderFile); + //濡傛灉鏄緪灏勮瘯楠�(杩戝満/杩滅▼涓婁紶鐨刢sv鏂囦欢) + String[] split = filename.split("\\."); + if (ObjectUtils.isNotEmpty(sonLaboratory) && (sonLaboratory.equals("杩戝満") || sonLaboratory.equals("杩滃満")) && + split[split.length - 1].equals("csv")) { + fuSheUtils.getFuSheWord(sonLaboratory, insOrderFile); + } } catch (Exception e) { - e.printStackTrace(); System.err.println("闄勪欢涓婁紶閿欒"); - return 0; } + return 0; } @Override @@ -419,7 +450,8 @@ throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙鎴栫户缁瘯楠�,鏆傛椂鏃犳硶鍑哄簱!"); } } - warehouseService.outWarehouse(sampleCode); + boolean a = true; + warehouseService.outWarehouse(sampleCode, a); return 0; } @@ -954,9 +986,9 @@ if (insOrder.getFormType().equals("鍘熺悊鏍锋満")) { for (InsSample sample : samples) { //鍑哄簱 - try{ - outInsOrderState(laboratory,sample.getSampleCode()); - }catch (Exception e){ + try { + outInsOrderState(laboratory, sample.getSampleCode()); + } catch (Exception e) { } } 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 4607460..e3c51c2 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 @@ -40,6 +40,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLEncoder; import java.time.LocalDate; import java.time.LocalDateTime; @@ -500,7 +502,9 @@ .filter(dto -> dto.getPrice() != null) // 杩囨护鎺変环鏍间负 null 鐨勫璞� .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum()) .sum(); - map.put("total", totalPrice); + BigDecimal bd = new BigDecimal(totalPrice).setScale(2, RoundingMode.HALF_UP); + double roundedTotalPrice = bd.doubleValue(); + map.put("total", roundedTotalPrice); return map; } 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 d7805c8..bbbfaaf 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 @@ -251,15 +251,6 @@ } catch (Exception e) { throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�"); } - //鑾峰彇鍦烘墍鐨勬姤鍛婁笓鐢ㄧ珷 - /* String sealUrl; - try { - String laboratory = insOrderMapper.selectById(insReport.getInsOrderId()).getLaboratory(); - sealUrl = insReportMapper.getLaboratoryByName(laboratory); - } catch (Exception e) { - throw new ErrorException("鎵句笉鍒版姤鍛婁笓鐢ㄧ珷"); - } - if (sealUrl == null) throw new ErrorException("鎵句笉鍒版姤鍛婁笓鐢ㄧ珷");*/ //绯荤粺鐢熸垚鎶ュ憡鍦板潃 String url = insReport.getUrl(); //鎵嬪姩涓婁紶鎶ュ憡鍦板潃 @@ -488,20 +479,6 @@ public String wordToPdf(String wordPath, String pdfPath, String sealUrl) { FileOutputStream os = null; try { - //鍑瘉 涓嶇劧鍒囨崲鍚庢湁姘村嵃 -// InputStream inputStream = this.getClass().getResourceAsStream("/lib/license.xml"); - /*String url; - try { - InputStream inputStream = this.getClass().getResourceAsStream("/lib/license.xml"); - 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); - }*/ InputStream is = new ClassPathResource("/lib/license.xml").getInputStream(); License license = new License(); license.setLicense(is); @@ -527,6 +504,7 @@ } } } + doc.updateFields(); doc.save(os, SaveFormat.PDF); //娣诲姞楠戠紳绔� diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java index 83eaf1d..d480b47 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/WarehouseServiceImpl.java @@ -1,5 +1,7 @@ package com.yuanchu.mom.service.impl; +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.service.impl.ServiceImpl; import com.yuanchu.mom.dto.HistoryDto; @@ -20,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author Administrator @@ -42,6 +45,8 @@ private WarehouseCellService warehouseCellService; private InsSampleMapper insSampleMapper; + + private InsOrderStateMapper insOrderStateMapper; private InsProductMapper insProductMapper; @@ -98,11 +103,37 @@ @Override @Transactional(rollbackFor = Exception.class) public int upShelf(WarehouseShelf warehouseShelf) { - warehouseCellMapper.update(null, Wrappers.<WarehouseCell>lambdaUpdate() - .eq(WarehouseCell::getShelfId, warehouseShelf.getWarehouseId()) - .gt(WarehouseCell::getRow, warehouseShelf.getRow()) - .gt(WarehouseCell::getCol, warehouseShelf.getCol()) - .set(WarehouseCell::getState, 0)); + WarehouseShelf shelf = warehouseShelfMapper.selectById(warehouseShelf.getId()); + if (shelf.getCol()>=warehouseShelf.getCol() && shelf.getRow() >= warehouseShelf.getRow()) { + //濡傛灉缁存姢鐨勬暟鎹皬浜庡師鏈夌殑琛屽垪鏁板彲浠ヨ繘琛屼慨鏀� + warehouseCellMapper.update(null, Wrappers.<WarehouseCell>lambdaUpdate() + .eq(WarehouseCell::getShelfId, warehouseShelf.getId()) + .and(true, wrapper -> wrapper.gt(WarehouseCell::getRow, warehouseShelf.getRow()) + .or() + .gt(WarehouseCell::getCol, warehouseShelf.getCol())) + .set(WarehouseCell::getState, 0)); + }else { + //濡傛灉缁存姢鐨勬暟鎹ぇ浜庡師鏈夌殑琛屽垪鏁伴渶瑕佽繘琛岄澶栨坊鍔� + List<WarehouseCell> cells = new ArrayList<>(); + for (int i = 1; i < warehouseShelf.getRow() + 1; i++) { + for (int a = 1; a < warehouseShelf.getCol() + 1; a++) { + WarehouseCell cell = new WarehouseCell(); + cell.setRow(i); + cell.setCol(a); + cell.setState(1); + cell.setShelfId(warehouseShelf.getId()); + WarehouseCell warehouseCell = warehouseCellMapper.selectOne(Wrappers.<WarehouseCell>lambdaQuery() + .eq(WarehouseCell::getShelfId, warehouseShelf.getId()) + .eq(WarehouseCell::getRow, i) + .eq(WarehouseCell::getCol, a)); + if (ObjectUtils.isNotEmpty(warehouseCell)){ + cell.setId(warehouseCell.getId()); + } + cells.add(cell); + } + } + warehouseCellService.saveOrUpdateBatch(cells); + } warehouseShelfMapper.updateById(warehouseShelf); return 0; } @@ -139,7 +170,7 @@ } @Override - public int outWarehouse(String sampleCode) { + public int outWarehouse(String sampleCode, boolean a) { List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode).select(InsSample::getId,InsSample::getCellId)); if(samples.size()!=1){ throw new ErrorException("鏍峰搧缂栧彿杈撳叆鏈夎"); @@ -147,6 +178,21 @@ if(samples.get(0).getCellId()==null){ throw new ErrorException("鏍峰搧 " + sampleCode + " 鏈叆搴�"); } + if (!a) { + //鍒ゆ柇璇ヨ鍗曟槸鍚︾珯鐐逛换鍔℃湁(缁х画璇曢獙鎴栬�呮槸缁撴潫璇曢獙) + List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, samples.get(0).getInsOrderId()) + .eq(InsOrderState::getInsState, 5)); + List<Integer> orderIds = new ArrayList<Integer>(); + orderIds.add(6); + if (CollectionUtils.isEmpty(orderStates)) { + List<Integer> collect = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, samples.get(0).getInsOrderId())).stream().map(InsOrderState::getInsState).distinct().collect(Collectors.toList()); + if (collect.size()!=0 && !collect.containsAll(orderIds)) { + throw new ErrorException("璇ユ牱鍝佺殑妫�楠屼换鍔¤繕娌℃湁缁撴潫璇曢獙鎴栫户缁瘯楠�,鏆傛椂鏃犳硶鍑哄簱!"); + } + } + } WarehouseHistory history = new WarehouseHistory(); history.setState(2); history.setInsSampleId(samples.get(0).getId()); diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java new file mode 100644 index 0000000..b95e6fa --- /dev/null +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java @@ -0,0 +1,443 @@ +package com.yuanchu.mom.utils; + +import com.deepoove.poi.XWPFTemplate; +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.util.TableTools; +import com.yuanchu.mom.dto.Exceldata; +import com.yuanchu.mom.exception.ErrorException; +import com.yuanchu.mom.mapper.InsOrderFileMapper; +import com.yuanchu.mom.mapper.InsOrderMapper; +import com.yuanchu.mom.pojo.InsOrder; +import com.yuanchu.mom.pojo.InsOrderFile; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.openxml4j.util.ZipSecureFile; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xwpf.usermodel.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +@Component +public class FuSheUtils { + @Value("${wordUrl}") + private String wordUrl; + + @Resource + InsOrderFileMapper insOrderFileMapper; + + @Resource + InsOrderMapper insOrderMapper; + + public void getFuSheWord(String sonLaboratory, InsOrderFile insOrderFile) { + //璇诲彇excel鏂囦欢鍐呭 + String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 鏇存柊涓轰綘鐨勬枃浠惰矾寰� + FileInputStream fileInputStream = null; + Workbook workbook = null; + try { + fileInputStream = new FileInputStream(new File(excelFilePath)); + workbook = new XSSFWorkbook(fileInputStream); // 瀵逛簬 .xlsx 鏂囦欢 + XWPFDocument document = new XWPFDocument(); + Exceldata exceldata = new Exceldata(); + Map<Integer, Object> project = new HashMap<>(); + HashMap<String, Object> datas1 = new HashMap<>(); + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + String s = ""; + Sheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + Map<String, Object> map1 = new HashMap<>(); + Map<String, Object> datas = new HashMap<>(); + List<Map<String, Object>> list = new ArrayList<>(); + for (Row row : sheet) { + if (row.getRowNum() != 1) { + HashMap<String, Object> map = new HashMap<>(); + for (Cell cell : row) { + if (row.getRowNum() == 0) { + switch (cell.getCellType()) { + case STRING: + project.put(cell.getColumnIndex(), cell.getStringCellValue()); + System.out.print(cell.getStringCellValue() + "\t"); + break; + case NUMERIC: + System.out.print(cell.getNumericCellValue() + "\t"); + break; + case BOOLEAN: + System.out.print(cell.getBooleanCellValue() + "\t"); + break; + case FORMULA: + System.out.print(cell.getCellFormula() + "\t"); + break; + default: + System.out.print("NULL\t"); + } + } else { + switch (cell.getCellType()) { + case STRING: + if (StringUtils.isNotEmpty(s)) { + datas.put(s, list); + } + list = new ArrayList<>(); + s = cell.getStringCellValue(); + datas.put(s, cell.getStringCellValue()); + System.out.print(cell.getStringCellValue() + "\t"); + break; + case NUMERIC: + int columnIndex = cell.getColumnIndex(); + Object o = project.get(columnIndex); + map.put(o.toString(), cell.getNumericCellValue()); + System.out.print(cell.getNumericCellValue() + "\t"); + break; + case BOOLEAN: + System.out.print(cell.getBooleanCellValue() + "\t"); + break; + case FORMULA: + System.out.print(cell.getCellFormula() + "\t"); + break; + default: + System.out.print("NULL\t"); + } + } + if (map.isEmpty()) { + list.add(map); + } + } + } + } + datas.put(s, list); + map1.put(sheetName, datas); + datas1.putAll(map1); + } + exceldata.setProject(project); + exceldata.setDataRow(datas1); + System.out.println(exceldata); + + HashMap<String, Object> map = new HashMap<>(); + for (String s : datas1.keySet()) { + Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); + for (String s1 : numbers.keySet()) { + List<HashMap<String, Object>> hashMaps = numbers.get(s1); + List<Double> floatList = new ArrayList<>(); + for (Map<String, Object> number : hashMaps) { + number.put("绔彛", s1); + Double o = (Double) number.get("棰戠巼"); + floatList.add(o); + } + Double maxValue = Collections.max(floatList); + Double minValue = Collections.min(floatList); + if (map.get(minValue + "-" + maxValue + "-" + s) == null) { + map.put(minValue + "-" + maxValue + "-" + s, s1); + } else { + Object o = map.get(minValue + "-" + maxValue + "-" + s); + map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o); + } + } + } + System.out.println(map); + int size = map.size(); + for (String s1 : map.keySet()) { + String o = map.get(s1).toString(); + List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList()); + int size1 = -1; + for (String s : datas1.keySet()) { + Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); + for (String s3 : o1.keySet()) { + List<HashMap<String, Object>> numbers = o1.get(s3); + for (String s2 : collect) { + if (s3.equals(s2)) { + if (numbers.size() > size1) { + size1 = numbers.size(); + } + } + } + map.put(s1, o + "," + size1); + } + } + } + System.out.println(map); + createWord(sonLaboratory, document, exceldata, map, insOrderFile); + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 鍏抽棴璧勬簮 + try { + if (workbook != null) { + workbook.close(); + } + if (fileInputStream != null) { + fileInputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + public void createWord(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, InsOrderFile insOrderFile) throws IOException { + int size = 1; + XWPFParagraph paragraphs = document.createParagraph(); + XWPFRun runs = paragraphs.createRun(); + runs.setBold(true); // 璁剧疆鏂囨湰鍔犵矖 + runs.setText("杈愬皠鏂瑰悜鍥惧弬鏁�"); + for (String s : map.keySet()) { + Map<String, Object> dataRow = exceldata.getDataRow(); + String result = s.substring(s.lastIndexOf("-") + 1); + String result1 = s.substring(0, s.lastIndexOf("-")); + String o = map.get(s).toString(); + String[] split = o.split(","); + Integer s1 = Integer.parseInt(split[split.length - 1]); + Integer i1 = split.length - 1; + int row = 3 + s1; + int cell = 6 + i1; + XWPFTable table1 = document.createTable(2, cell); + mergeCellsHorizontally(table1, 1, 0, cell - 1); + mergeCellsHorizontally(table1, 0, 4, cell - 2); + table1.setInsideHBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴姘村钩杈规 + table1.setInsideVBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴鍨傜洿杈规 + table1.setBottomBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓嬭竟妗� + table1.setTopBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓婅竟妗� + table1.setLeftBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 宸﹁竟妗� + table1.setRightBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍙宠竟妗� + XWPFParagraph paragraph12 = table1.getRow(0).getCell(0).getParagraphArray(0); + paragraph12.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run12 = paragraph12.createRun(); + run12.setText("搴忓彿"); + XWPFParagraph paragraph13 = table1.getRow(0).getCell(1).getParagraphArray(0); + paragraph13.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run13 = paragraph13.createRun(); + run13.setText("妫�楠岄」鐩�"); + XWPFParagraph paragraph14 = table1.getRow(0).getCell(2).getParagraphArray(0); + paragraph14.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run14 = paragraph14.createRun(); + run14.setText("鍗曚綅"); + XWPFParagraph paragraph15 = table1.getRow(0).getCell(3).getParagraphArray(0); + paragraph15.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run15 = paragraph15.createRun(); + run15.setText("鏍囧噯瑕佹眰"); + XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell - 1).getParagraphArray(0); + paragraph16.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run16 = paragraph16.createRun(); + run16.setText("妫�楠岀粨璁�"); + XWPFParagraph paragraph17 = table1.getRow(0).getCell(4).getParagraphArray(0); + paragraph17.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run17 = paragraph17.createRun(); + run17.setText("妫�楠岀粨鏋�"); + XWPFParagraph paragraph18 = table1.getRow(1).getCell(0).getParagraphArray(0); + paragraph18.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run18 = paragraph18.createRun(); + run18.setText("棰戞锛� " + result1 + "MHz " + "涓嬪�捐" + result); + List<String> collect = Arrays.stream(split).collect(Collectors.toList()); + List<Map<String, Object>> list = new ArrayList<>(); + // 瀵规墍鏈夌殑閿仛鍚� + Map<String, List<Map<String, Object>>> aggregatedMap = new HashMap<>(); + Map<String, List<Map<String, Object>>> o1 = (Map<String, List<Map<String, Object>>>) dataRow.get(result); + for (String s2 : collect) { + if (s2.contains("绔彛")) { + List<Map<String, Object>> mapList = o1.get(s2); + list.addAll(mapList); + } + } + // 閬嶅巻姣忎竴涓」鐩� + for (Map<String, Object> item : list) { + for (String key : item.keySet()) { + // 濡傛灉璇ラ敭鍦� aggregatedMap 涓笉瀛樺湪锛屽垯鍒涘缓涓�涓柊鐨� List + aggregatedMap.putIfAbsent(key, new ArrayList<>()); + // 灏嗗綋鍓嶉」鐩坊鍔犲埌瀵瑰簲閿殑 List 涓� + aggregatedMap.get(key).add(item); + } + } + for (String s2 : aggregatedMap.keySet()) { + if (s2.equals("绔彛") || s2.equals("棰戠巼")) { + continue; + } + List<Map<String, Object>> mapList = aggregatedMap.get(s2); + // 鍒涘缓涓�涓〃鏍� + XWPFTable table = document.createTable(row, cell); + table.setWidth("100%"); + //鍨傜洿 + mergeCellsVertically(table, 0, 0, row - 1); + mergeCellsVertically(table, 1, 0, row - 1); + mergeCellsVertically(table, 2, 0, row - 1); + mergeCellsVertically(table, 3, 0, row - 1); + mergeCellsVertically(table, 4, 0, 1); + mergeCellsVertically(table, cell - 1, 0, 1); + mergeCellsVertically(table, cell - 1, 2, row - 2); + //姘村钩 + mergeCellsHorizontally(table, 0, 5, cell - 2); + mergeCellsHorizontally(table, row - 1, 5, cell - 2); + + table.setInsideHBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴姘村钩杈规 + table.setInsideVBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍐呴儴鍨傜洿杈规 + table.setBottomBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓嬭竟妗� + table.setTopBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 涓婅竟妗� + table.setLeftBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 宸﹁竟妗� + table.setRightBorder(XWPFTable.XWPFBorderType.SINGLE, 2, 0, "000000"); // 鍙宠竟妗� + + // 璁剧疆鍗曞厓鏍兼枃鏈苟灞呬腑 + XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0); + paragraph.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run = paragraph.createRun(); + run.setText(String.valueOf(size)); + XWPFParagraph paragraph1 = table.getRow(0).getCell(1).getParagraphArray(0); + paragraph1.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run1 = paragraph1.createRun(); + run1.setText(s2); + // 璋冪敤鏂规硶鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� + String firstContent = extractFirstContentFromBrackets(s2); + if (firstContent != null) { + XWPFParagraph paragraph2 = table.getRow(0).getCell(2).getParagraphArray(0); + paragraph2.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run2 = paragraph2.createRun(); + run2.setText(firstContent); + } else { + System.out.println("娌℃湁鎵惧埌鎷彿鍐呯殑鍐呭銆�"); + } + XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); + paragraph3.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run3 = paragraph3.createRun(); + run3.setText("/"); + XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); + paragraph4.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run4 = paragraph4.createRun(); + run4.setText("棰戠巼锛圡Hz锛�"); + XWPFParagraph paragraph5 = table.getRow(0).getCell(5).getParagraphArray(0); + paragraph5.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run5 = paragraph5.createRun(); + run5.setText("绔彛"); + XWPFParagraph paragraph6 = table.getRow(0).getCell(cell - 1).getParagraphArray(0); + paragraph6.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run6 = paragraph6.createRun(); + run6.setText("/"); + XWPFParagraph paragraph7 = table.getRow(1).getCell(cell - 1).getParagraphArray(0); + paragraph7.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run7 = paragraph7.createRun(); + run7.setText("鍚堟牸"); + XWPFParagraph paragraph8 = table.getRow(row - 1).getCell(4).getParagraphArray(0); + paragraph8.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run8 = paragraph8.createRun(); + run8.setText("骞冲潎鍊�"); + XWPFParagraph paragraph9 = table.getRow(row - 1).getCell(cell - 1).getParagraphArray(0); + paragraph9.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run9 = paragraph9.createRun(); + run9.setText("/"); + for (int i = 0; i < collect.size(); i++) { + String s3 = collect.get(i); + if (s3.contains("绔彛")) { + XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0); + paragraph10.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run10 = paragraph10.createRun(); + run10.setText(s3); + } + } + Map<Double, List<Map<String, Object>>> group = mapList.stream() + .collect(Collectors.groupingBy(item -> (Double) item.get("棰戠巼"))); + group = new TreeMap<>(group); + int hang = 2; + Double count = 0.0; + for (Double aDouble : group.keySet()) { + List<Map<String, Object>> mapList1 = group.get(aDouble); + for (Map<String, Object> stringObjectMap : mapList1) { + String port = stringObjectMap.get("绔彛").toString(); + for (int i = 5; i < cell - 1; i++) { + String text = table.getRow(1).getCell(i).getText(); + if (text.equals(port)) { + XWPFParagraph paragraph10 = table.getRow(hang).getCell(i).getParagraphArray(0); + paragraph10.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run10 = paragraph10.createRun(); + count = (Double) stringObjectMap.get(s2) + count; + String project = stringObjectMap.get(s2).toString(); + run10.setText(project); + } + } + } + XWPFParagraph paragraph10 = table.getRow(hang).getCell(4).getParagraphArray(0); + paragraph10.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run10 = paragraph10.createRun(); + run10.setText(String.valueOf(aDouble)); + hang++; + } + XWPFParagraph paragraph11 = table.getRow(row - 1).getCell(5).getParagraphArray(0); + paragraph11.setAlignment(ParagraphAlignment.CENTER); + XWPFRun run11 = paragraph11.createRun(); + double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString())); + run11.setText(String.format("%.2f",v)); + size++; + } + } + // 杈撳嚭鍒版枃浠� + try { + InsOrder insOrder = insOrderMapper.selectById(insOrderFile.getInsOrderId()); + String[] split = insOrderFile.getFileName().split("\\."); + String name = insOrderFile.getFileName().substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); + FileOutputStream out = new FileOutputStream(wordUrl + "/" + insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); + document.write(out); + out.close(); + document.close(); + InsOrderFile orderFile = new InsOrderFile(); + orderFile.setInsOrderId(insOrderFile.getInsOrderId()); + orderFile.setFileUrl(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); + orderFile.setType(2); + orderFile.setFileName(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "瑙f瀽鐨勮緪灏勭珯鐐规姤鍛�.docx"); + orderFile.setSonLaboratory(sonLaboratory); + insOrderFileMapper.insert(orderFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + // 姘村钩鍚堝苟鍗曞厓鏍� + private static void mergeCellsHorizontally(XWPFTable table, int row, int fromCol, int toCol) { + + for (int i = fromCol; i <= toCol; i++) { + if (i == fromCol) { + table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART); + } else { + table.getRow(row).getCell(i).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE); + } + + } + } + + // 鍨傜洿鍚堝苟鍗曞厓鏍� + private static void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) { + for (int i = fromRow; i <= toRow; i++) { + if (i == fromRow) { + table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART); + } else { + table.getRow(i).getCell(col).getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE); + } + } + } + + // 鎻愬彇绗竴涓嫭鍙峰唴鐨勫唴瀹� + public static String extractFirstContentFromBrackets(String str) { + // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鍖归厤鎷彿鍐呯殑鍐呭锛屽悓鏃舵敮鎸佷腑鏂囧拰鑻辨枃鎷彿 + Pattern pattern = Pattern.compile("\\锛�(.*?)\\锛墊\\((.*?)\\)"); + Matcher matcher = pattern.matcher(str); + + // 鏌ユ壘绗竴涓尮閰嶇殑鍐呭 + if (matcher.find()) { + // 鑾峰彇鎷彿鍐呯殑鍐呭锛屽垽鏂槸涓枃鎷彿杩樻槸鑻辨枃鎷彿 + return matcher.group(1) != null ? matcher.group(1) : matcher.group(2); + } + return null; // 濡傛灉娌℃湁鎵惧埌鍖归厤椤癸紝鍒欒繑鍥瀗ull + } + +} diff --git a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java index f1861ce..e28d68e 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java +++ b/inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java @@ -144,7 +144,8 @@ if (inspectionItemSubclass.contains("浜掕皟")) { aa += (angles + 1) * portRow * often; } - } else { + } + else { if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�")) { aa += (angles + 1) * portRow; } @@ -232,7 +233,8 @@ paragraphRenderDataList.add(paragraphRenderData); cellRenderData.setParagraphs(paragraphRenderDataList); cells.add(cellRenderData); - } else { + } + else { if (insOrderState.getVersion() == 1) { //闈炵數璋冪増鏈�(绠�鍗曠増) if (inspectionItemSubclass.contains("鐢靛帇椹绘尝姣�") && i <= 2 * portRow) { @@ -1597,6 +1599,7 @@ insOrderFile.setFileName(name); insOrderFile.setType(2); insOrderFile.setFileUrl(name); + insOrderFile.setSonLaboratory("鐢佃矾璇曢獙"); insOrderFileMapper.insert(insOrderFile); } @@ -1648,7 +1651,7 @@ .eq(InsProduct::getInsResult, 1)); productSize3.set(productSize3.get() + Integer.parseInt(productCount3 + "")); //灏嗛」鐩寜鐓х珯鐐硅繘琛屽垎绫� - Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getLaboratory)); + Map<String, List<InsProduct>> listMap = s.getInsProduct().stream().collect(Collectors.groupingBy(InsProduct::getSonLaboratory)); // 鍒涘缓涓�涓� Map 灏嗙珯鐐瑰拰椤圭洰ID鐨勬槧灏勫叧绯� Map<String, Set<Integer>> labToDeviceMap = new HashMap<>(); // 鑾峰彇鎵�鏈夌珯鐐圭殑椤圭洰ID 鍒楄〃 @@ -1874,6 +1877,121 @@ } } } + else { + //濡傛灉鍙湁鐜璇曢獙娌℃湁鐢佃矾璇曢獙 + strings.remove("杩戝満"); + strings.remove("杩滃満"); + if (strings.size() > 0) { + Map<String, String> table2 = new HashMap<>(); + table2.put("indexs", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + table2.put("term", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + table2.put("result", "鐜璇曢獙:" + String.join("銆�", strings) + "鈭�1"); + tables.add(table2); + + /*鍒涘缓鐜璇曢獙鏉′欢琛�2*(椤圭洰鏁�+1)*/ + List<InsProduct> products = samples.stream().flatMap(sampleProductDto -> sampleProductDto.getInsProduct().stream() + .filter(insProduct -> !insProduct.getInspectionItem().equals("鐢佃矾璇曢獙")) + .filter(insProduct -> !insProduct.getInspectionItem().equals("杈愬皠璇曢獙"))) + .map(insProduct -> { + InsProduct product = new InsProduct(); + product.setInspectionItemSubclass(insProduct.getInspectionItemSubclass()); + product.setTell(insProduct.getTell()); + return product; + }).distinct().collect(Collectors.toList()); + List<RowRenderData> rows = new ArrayList<>(); + //琛屾暟 + for (int i = 0; i < products.size() + 1; i++) { + RowRenderData rowRenderData = new RowRenderData(); + RowStyle rowStyle = new RowStyle(); + rowStyle.setHeight(40); + rowRenderData.setRowStyle(rowStyle); + List<CellRenderData> cells = new ArrayList<>(); + //鍒楁暟 + for (int j = 0; j < 2; 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) { + //绗竴鍒� + textRenderData.setText("椤圭洰"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + //绗簩鍒� + textRenderData.setText("璇曢獙瑕佹眰"); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } else { + //鍏朵綑琛� + if (j == 0) { + //绗竴鍒� + textRenderData.setText(products.get(i - 1).getInspectionItemSubclass()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } else { + textRenderData.setText(products.get(i - 1).getTell()); + renderData.add(textRenderData); + paragraphRenderData.setContents(renderData); + paragraphRenderDataList.add(paragraphRenderData); + cellRenderData.setParagraphs(paragraphRenderDataList); + cells.add(cellRenderData); + } + } + } + rowRenderData.setCells(cells); + if (rowRenderData.getCells().size() != 0) { + rows.add(rowRenderData); + } + } + TableRenderData tableRenderData = new TableRenderData(); + tableRenderData.setRows(rows); + int countSize = tableRenderData.getRows().get(0).getCells().size(); + for (RowRenderData row : tableRenderData.getRows()) { + if (row.getCells().size() != countSize) { + throw new ErrorException("姣忚鍗曞厓鏍间笉鐩哥瓑"); + } + } + TableStyle tableStyle = new TableStyle(); + tableStyle.setWidth(XWPFTable.DEFAULT_PERCENTAGE_WIDTH); + tableStyle.setAlign(TableRowAlign.CENTER); + BorderStyle borderStyle = new BorderStyle(); + borderStyle.setColor("000000"); + borderStyle.setType(XWPFTable.XWPFBorderType.THICK); + borderStyle.setSize(4); + tableStyle.setLeftBorder(borderStyle); + tableStyle.setTopBorder(borderStyle); + tableStyle.setRightBorder(borderStyle); + tableStyle.setBottomBorder(borderStyle); + tableRenderData.setTableStyle(tableStyle); + Map<String, Object> table4 = new HashMap<>(); + table4.put("table4", tableRenderData); + tables4.add(table4); + } + } String url; try { diff --git a/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml index 3dbe7bd..eba5dc6 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml @@ -12,13 +12,19 @@ <result column="create_time" property="createTime"/> <result column="update_user" property="updateUser"/> <result column="update_time" property="updateTime"/> + <result column="son_laboratory" property="sonLaboratory"/> </resultMap> <select id="getFileList" resultType="com.yuanchu.mom.pojo.InsOrderFile"> select A.* from (select iof.*, name - from ins_order_file iof - left join user u on iof.create_user = u.id - where ins_order_id=#{insOrderId}) A + from ins_order_file iof + left join user u on iof.create_user = u.id + where ins_order_id=#{insOrderId} + <if test="sonLaboratory!=null and sonLaboratory!=''"> + and son_laboratory=#{sonLaboratory} + or son_laboratory is null + </if> + ) A <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> diff --git a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml index 7decfe3..5db1f71 100644 --- a/inspect-server/src/main/resources/mapper/InsOrderMapper.xml +++ b/inspect-server/src/main/resources/mapper/InsOrderMapper.xml @@ -158,7 +158,7 @@ A.company, A.`name`, COUNT(1) num, - SUM(A.price) price + ROUND(SUM(A.price),2) price FROM (SELECT i.id, i.entrust_code, i.create_time, @@ -349,63 +349,56 @@ A.inspection_item, A.company, A.`name`, - production, - engineering, - COUNT(1) num, - SUM(A.price) price, - SUM(A.cost) cost - FROM - (SELECT - i.id, + COUNT(1) num, + ROUND(SUM(A.price),2) price + FROM (SELECT i.id, i.entrust_code, i.create_time, isa.sample, - isa.sample_code, isa.model, - c.price, - c.cost, - c.inspection_item, + ins_sample_id, + sum(c.price * times) price, + GROUP_CONCAT(distinct c.inspection_item SEPARATOR ',') inspection_item, i.company, - u.`name`, - i.create_user, - c.ins_sample_id, - production, - engineering - FROM - ins_order i + u.`name` + FROM ins_order i LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id LEFT JOIN `user` u ON u.id = i.user_id left join custom cus on cus.id = u.company - LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id, - GROUP_CONCAT(b.inspection_item2 - SEPARATOR ',') - inspection_item from (select * , - GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from - ins_product where state = 1 and ins_result is not null and ins_result!=2 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP - BY b.ins_sample_id) c ON c.ins_sample_id = isa.id - where (<!--i.state = 1 or i.state = 3 or -->i.state = 4) and c.ins_sample_id IS not NULL)A - GROUP BY - A.id, + LEFT JOIN (select ip.ins_sample_id, + ip.inspection_item, + ip.inspection_item_subclass, + ip.price, + sum(aowh.output_work_time) times + from ins_product ip + left join auxiliary_output_working_hours aowh on ip.id = aowh.ins_product_id + where state = 1 + and ins_result is not null + and ins_result != 2 + and template_id IS NOT NULL + group by ip.ins_sample_id, + ip.inspection_item, + ip.inspection_item_subclass, + ip.price) c ON c.ins_sample_id = isa.id + where (i.state = 4) + and c.ins_sample_id IS not NULL + group by i.id, + i.entrust_code, + i.create_time, + isa.sample, + isa.model, + i.company, + ins_sample_id, + u.`name`) A + GROUP BY A.id, A.entrust_code, A.create_time, A.sample, A.model, A.inspection_item, A.company, - A.`name`, - production, - engineering - ORDER BY - A.id, - A.entrust_code, - A.create_time, - A.sample, - A.model, - A.inspection_item, - A.company, - A.`name`, - production, - engineering) B + A.`name` + ) B <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''"> ${ew.customSqlSegment} </if> diff --git a/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml b/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml index 056e417..84c887a 100644 --- a/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml +++ b/inspect-server/src/main/resources/mapper/WarehouseCellMapper.xml @@ -17,11 +17,12 @@ </resultMap> <select id="getWarehouse" resultMap="WarehouseCellAndHistoryDto"> - select wc.id, wc.row, wc.col, i.id sampleId, i.sample, i.model, i.sample_code from warehouse_cell wc + select wc.id, wc.row, wc.col, i.id sampleId, i.sample, i.model, i.sample_code + from warehouse_cell wc left join ins_sample i on i.cell_id = wc.id where wc.state = 1 and wc.shelf_id = #{shelfId} - order by wc.id + order by wc.row ,wc.col, wc.id </select> <resultMap id="WarehouseCellAndHistoryDto" type="com.yuanchu.mom.dto.WarehouseCellAndSampleDto"> -- Gitblit v1.9.3