From c8355d4a1f27716edc510d936b6a7982b0ab99b3 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 24 三月 2025 13:37:26 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/tx-lims-after --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java | 167 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 111 insertions(+), 56 deletions(-) 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 9800317..a3f54d6 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,24 @@ 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.data.style.TableStyle; +import com.deepoove.poi.util.TableTools; import com.itextpdf.text.BadElementException; import com.itextpdf.text.DocumentException; import com.itextpdf.text.pdf.PdfContentByte; @@ -14,16 +26,22 @@ import com.itextpdf.text.pdf.PdfStamper; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.common.PrintChina; -import com.yuanchu.mom.dto.ReportPageDto; +import com.yuanchu.mom.dto.*; 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.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.utils.WordUtils; import com.yuanchu.mom.vo.Result; +import org.apache.commons.io.IOUtils; +import org.apache.logging.log4j.util.Strings; +import org.apache.poi.xwpf.usermodel.*; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; @@ -43,6 +61,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; @@ -66,14 +86,53 @@ @Resource private InsReportMapper insReportMapper; + @Autowired + ProcessReportMapper1 processReportMapper; + @Value("${wordUrl}") private String wordUrl; @Value("${file.path}") private String imgUrl; + @Value("${twoCode}") + private String twoCode; + @Resource private InsOrderMapper insOrderMapper; + + @Resource + private InsOrderStateMapper insOrderStateMapper; + + @Resource + WordUtils wordUtils; + + @Resource + private InsProductMapper insProductMapper; + + @Resource + private InsProductResultMapper insProductResultMapper; + + @Resource + private InsProductResult2Mapper insProductResult2Mapper; + + @Resource + private InsOrderUserMapper insOrderUserMapper; + + @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) { @@ -158,7 +217,7 @@ //鎵瑰噯 @Override @Transactional(rollbackFor = Exception.class) - public int ratifyReport(Integer id, Integer isRatify, String ratifyTell) { + public int ratifyReport(Integer id, Integer isRatify, String ratifyTell, String sealUrl) { InsReport insReport = insReportMapper.selectById(id); insReport.setIsRatify(isRatify); if (ObjectUtils.isNotEmpty(ratifyTell)) { @@ -171,6 +230,7 @@ insReport.setState(0);//鎻愪氦鐘舵�佹敼涓哄緟鎻愪氦 return insReportMapper.updateById(insReport); } + insReportMapper.updateById(insReport); //鑾峰彇鎵瑰噯浜虹殑绛惧悕鍦板潃 String signatureUrl; try { @@ -178,15 +238,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(); //鎵嬪姩涓婁紶鎶ュ憡鍦板潃 @@ -198,26 +249,11 @@ put("seal2", Pictures.ofLocal(imgUrl + "/" + sealUrl).create()); }}, finalUrl); wordToPdf(finalUrl, sealUrl); - - /* String replace = finalUrl.replace(".docx", ".pdf"); - CompletableFuture.supplyAsync(() -> { - try { - stamperCheckMarkPDF(replace,replace,sealUrl); - return null; - } catch (Exception e) { - throw new ErrorException("楠戠紳绔犳彃鍏ュけ璐�"); - } - }).thenAccept(res -> { - }).exceptionally(e -> { - e.printStackTrace(); - return null; - });*/ - - InsOrder insOrder = new InsOrder(); - insOrder.setId(insReportMapper.selectById(id).getInsOrderId()); - insOrder.setState(4); - insOrderMapper.updateById(insOrder); - return insReportMapper.updateById(insReport); + /*鏂板cnas7.8鎶ュ憡缁撴灉*/ + ProcessReport processReport = new ProcessReport(); + processReport.setInsReportCode(insReport.getCode()); + processReportMapper.insert(processReport); + return 0; } @Override @@ -286,8 +322,7 @@ if (files != null) { for (File f : files) { // 鏍规嵁鏂囦欢鍚嶆煡璇d - String name = f.getName(); - InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", "").replace("JCZX", "JCZX/"))); + InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", ""))); if (ObjectUtils.isEmpty(insReport)) { throw new ErrorException("娌℃湁鎵惧埌 " + f.getName() + " 杩欎釜鏂囦欢瀵瑰簲鐨勬姤鍛婃暟鎹�"); } @@ -304,8 +339,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("鏂囦欢涓婁紶澶辫触"); } } @@ -322,6 +356,42 @@ } } return 0; + } + + //鏄惁闇�瑕佺敓鎴愭姤鍛�: 0涓嶉渶瑕�;1闇�瑕� + @Override + @Transactional(rollbackFor = Exception.class) + public int isReport(InsReportDto insReportDto) { + //鍏堝垽鏂璁㈠崟鏄惁鍙互鍘荤敓浜ф姤鍛�(鏄惁缁撴潫璇曢獙) + Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery() + .eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5)); + if (count > 0) { + if (insReportDto.getState() == 1) { + List<InsReportDto1> insReportDto1s = insReportDto.getInsReportDto1s(); + for (InsReportDto1 insReportDto1 : insReportDto1s) { + if (ObjectUtils.isNotEmpty(insReportDto1.getInsReportDto2s())) { + wordUtils.generateReport(insReportDto.getId(), insReportDto1); + } + } + } + } else { + throw new ErrorException("璇ヨ鍗曡繕鏈粨鏉熻瘯楠�,鏃犳硶鐢熸垚鎶ュ憡!"); + } + return 0; + } + + //鏌ュ嚭璇ヨ鍗曚笅姣忎釜绔欑偣涓嬬殑妫�楠屾鏁� + @Override + public List<InsOrderStateDto> getInsOrderStateCount(Integer id, Integer sampleId) { + List<InsOrderStateDto> insOrderStateDtos = new ArrayList<>(); + InsSample insSample = insSampleMapper.selectById(sampleId); + InsOrderStateDto insOrderStateDto = new InsOrderStateDto(); + insOrderStateDto.setInsSample(insSample); + List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id, insSample.getId()); + insOrderStateDto.setInsOrderStates(insOrderStates); + insOrderStateDtos.add(insOrderStateDto); + + return insOrderStateDtos; } @@ -400,20 +470,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); @@ -430,7 +486,6 @@ //娣诲姞楠戠紳绔� stamperCheckMarkPDF(pdfPath.replace(".pdf", "-1.pdf"), pdfPath, imgUrl + "/" + sealUrl); - } catch (Exception e) { e.printStackTrace(); -- Gitblit v1.9.3