From 2e378480e4920042ce57cc853ed33b35bcd580aa Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期四, 24 九月 2026 17:50:00 +0800
Subject: [PATCH] fix(report): 解决Word报告生成中PNG图片压缩率问题

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java |   29 ++++++++++++++++++++++-------
 1 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
index 811ecdc..3ccac7e 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -43,6 +43,7 @@
 import com.ruoyi.system.mapper.UserMapper;
 import com.ruoyi.system.service.InformationNotificationService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.openxml4j.util.ZipSecureFile;
 import org.apache.poi.xwpf.usermodel.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -449,8 +450,12 @@
         }
         Integer insOrderId = insReportMapper.selectById(id).getInsOrderId();
         InsOrder order = insOrderMapper.selectById(insOrderId);
-        boolean isRawMater = order.getTypeSource() != null && order.getTypeSource().equals(1);
-
+        IfsInventoryQuantity ifsInventoryQuantity = null;
+        if(ObjectUtils.isNotEmpty(order.getIfsInventoryId())){
+            ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
+        }
+        boolean isRawMater = order.getTypeSource() != null && !order.getTypeSource().equals(-1);
+        String contract = ObjectUtils.isNotEmpty(ifsInventoryQuantity)?ifsInventoryQuantity.getContract():order.getContract();//ifs鍩�
         //鑾峰彇鍦烘墍鐨勬姤鍛婁笓鐢ㄧ珷
         String sealUrl;
         String laboratory = insOrderMapper.selectById(insReport.getInsOrderId()).getLaboratory();
@@ -461,7 +466,7 @@
             } else {
                 type = "濮旀墭鎶ュ憡";
             }
-            sealUrl = insReportMapper.getLaboratoryByName(laboratory, type);
+            sealUrl = insReportMapper.getLaboratoryByName(laboratory, type,contract);
         } catch (Exception e) {
             throw new ErrorException(laboratory + "鎵句笉鍒版姤鍛婁笓鐢ㄧ珷");
         }
@@ -520,7 +525,18 @@
 
     @Override
     public int wordInsertUrl(Map<String, Object> map, String url) {
-        XWPFTemplate template = XWPFTemplate.compile(url).render(map);
+        XWPFTemplate template;
+        synchronized (ZipSecureFile.class) {
+            double originalMinInflateRatio = ZipSecureFile.getMinInflateRatio();
+            try {
+                // 鍏煎鎶ュ憡涓帇缂╃巼杈冮珮鐨勭函鑹�/閫忔槑 PNG锛岀紪璇戝悗绔嬪嵆鎭㈠ POI 瀹夊叏闃堝�笺��
+                ZipSecureFile.setMinInflateRatio(0.001D);
+                template = XWPFTemplate.compile(url);
+            } finally {
+                ZipSecureFile.setMinInflateRatio(originalMinInflateRatio);
+            }
+        }
+        template.render(map);
         try {
             template.writeAndClose(Files.newOutputStream(Paths.get(url)));
         } catch (IOException e) {
@@ -817,7 +833,7 @@
             //濡傛灉鏄媶鍒嗙殑璁㈠崟锛屽垯鎶婃媶鍒嗙殑鎵�鏈夋壒娆¢兘绉诲簱
             if(one.getIsSplitOrder()==1 && !hasExemption){
                 //鏌ヨ鎷嗗垎璁㈠崟璇︽儏
-                List<IfsInventoryQuantityVO> ifsInventoryQuantityVOS = ifsInventoryQuantityMapper.selectSplitOrderList(one.getPartNo(), one.getLineNo(), one.getReleaseNo(), one.getReceiptNo(), one.getOrderNo());
+                List<IfsInventoryQuantityVO> ifsInventoryQuantityVOS = ifsInventoryQuantityMapper.selectSplitOrderList(one.getPartNo(), one.getLineNo(), one.getReleaseNo(), one.getReceiptNo(), one.getOrderNo(),one.getContract());
                 for (IfsInventoryQuantityVO vo : ifsInventoryQuantityVOS) {
                     //濡傛灉鏈夊鎵樺崟淇℃伅涓斿悎鏍硷紝璧扮櫥璁板悗绉诲簱锛涘鏋滄病鏈夛紝鍒欒蛋鍏嶆锛涗笉鍚堟牸涓嶅仛澶勭悊
                     if(Objects.isNull(vo.getInsOrderId())){
@@ -860,6 +876,7 @@
                 // 浼佷笟寰俊閫氱煡
                 String message = "";
                 message += "妫�娴嬬粨鏋滄彁浜ら�氱煡";
+                message += "\nIFS鍩�: " + one.getContract();
                 message += "\n鎵规鍙�: " + one.getUpdateBatchNo();
                 message += "\n闆朵欢鍙�: " + one.getPartNo();
                 message += "\n闆朵欢鎻忚堪: " + one.getPartDesc();
@@ -875,8 +892,6 @@
             });
 
         }
-
-
     }
 
     /**

--
Gitblit v1.9.3