From 0f79bd8c70a6122794aafac0d9373613a75f3e4c Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期三, 01 四月 2026 11:24:20 +0800
Subject: [PATCH] 质检新增出库检验报告下载功能
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 79 +++++++++++++++++++++++++++++++++++++++
1 files changed, 79 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index b4156c3..5ba5685 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -33,7 +33,10 @@
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
+import java.math.BigDecimal;
import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -207,5 +210,81 @@
}
+ @Override
+ public void downOutReport(HttpServletResponse response, QualityInspect qualityInspect) {
+ QualityInspect inspect = qualityInspectMapper.selectOneData(qualityInspect.getId());
+
+ // 鏍煎紡鍖栨棩鏈熷瓧娈�
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ inspect.setCheckTimeStr(inspect.getCheckTime() != null ? sdf.format(inspect.getCheckTime()) : "");
+ inspect.setProductionDateStr(inspect.getProductionDate() != null ? inspect.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) : "");
+ inspect.setValidityDateStr(inspect.getValidityDate() != null ? inspect.getValidityDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) : "");
+
+ // 鑾峰彇妫�楠屽弬鏁板垪琛�
+ List<QualityInspectParam> paramList = qualityInspectParamService.list(
+ Wrappers.<QualityInspectParam>lambdaQuery().eq(QualityInspectParam::getInspectId, inspect.getId()));
+ int index = 1;
+ for (QualityInspectParam detail : paramList) {
+ detail.setIndex(index);
+ index++;
+ }
+
+ // 鑾峰彇浜у搧鍨嬪彿淇℃伅锛堝寘鍚湁鏁堟湡锛�
+ ProductModel productModel = null;
+ BigDecimal validityPeriod = null;
+ if (inspect.getProductModelId() != null) {
+ productModel = productModelMapper.selectById(inspect.getProductModelId());
+ if (productModel != null) {
+ validityPeriod = productModel.getValidityPeriod();
+ }
+ }
+ /*String calculatedValidityDate = "";
+ if (inspect.getProductionDate() != null && validityPeriod != null) {
+ LocalDate productionDate = inspect.getProductionDate();
+ int years = validityPeriod.intValue();
+ int months = validityPeriod
+ .subtract(new BigDecimal(years))
+ .multiply(new BigDecimal(12))
+ .setScale(0, RoundingMode.HALF_UP)
+ .intValue();
+ LocalDate calculatedDate = productionDate
+ .plusYears(years)
+ .plusMonths(months);
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ calculatedValidityDate = calculatedDate.format(formatter);
+ }*/
+
+ // 妫�楠屼緷鎹細浜у搧鍚嶇О + 鍑哄巶妫�楠屾搷浣滄祦绋�
+ String checkBasis = (inspect.getProductName() != null ? inspect.getProductName() : "") + "鍑哄巶妫�楠屾搷浣滄祦绋�";
+
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/out-report-template.docx");
+ Configure configure = Configure.builder()
+ .bind("paramList", new HackLoopTableRenderPolicy())
+ .build();
+// final String finalCalculatedValidityDate = calculatedValidityDate;
+ final String finalCheckBasis = checkBasis;
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+ new HashMap<String, Object>() {{
+ put("inspect", inspect);
+ put("checkBasis", finalCheckBasis);
+// put("calculatedValidityDate", finalCalculatedValidityDate);
+ put("paramList", paramList);
+ }});
+
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode("鍑哄簱妫�楠屾姤鍛�", "UTF-8");
+ response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ inputStream.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ }
}
--
Gitblit v1.9.3