From 17a63200983a8e154a1eb3549d1caffa050372c1 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 30 三月 2026 17:14:45 +0800
Subject: [PATCH] feat:1.生产订单领用 2.报工领用(关联订单领用) 3.报工删除(关联报工领用) 4.不合格处理(返工生成返工附件并下载)

---
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java |   69 +++++++++++++++++++++++++++++++++-
 1 files changed, 66 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index 1650690..a3c199d 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,8 +7,8 @@
 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.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
 import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -17,7 +17,10 @@
 import com.ruoyi.production.mapper.ProductProcessRouteMapper;
 import com.ruoyi.production.mapper.ProductWorkOrderMapper;
 import com.ruoyi.production.mapper.ProductionProductMainMapper;
-import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRoute;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import com.ruoyi.production.pojo.ProductWorkOrder;
 import com.ruoyi.production.service.ProductOrderService;
 import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
@@ -29,10 +32,14 @@
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @AllArgsConstructor
 @Service
@@ -67,7 +74,6 @@
         if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
             switch (qualityUnqualified.getDealResult()) {
                 case "杩斾慨":
-                case "杩斿伐":
                     //鍒ゆ柇璐ㄦ琛ㄦ槸鍚︽湁鐩稿叧鐨勬姤宸d,濡傛灉鏈夋姤宸d,閭d箞杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
                     if (ObjectUtils.isNotNull(qualityInspect.getProductMainId())) {
                         //杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
@@ -133,6 +139,7 @@
                     //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
                     stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
                     break;
+                case "杩斿伐":
                 default:
                     break;
             }
@@ -161,4 +168,60 @@
     public QualityUnqualified getUnqualified(Integer id) {
         return qualityUnqualifiedMapper.getUnqualified(id);
     }
+
+    @Override
+    public void downloadReturnRecord(Long id, HttpServletResponse response) {
+        XWPFTemplate template = null;
+        InputStream inputStream = null;
+        OutputStream out = null;
+        try {
+            // 1. 鏌ヨ鏁版嵁
+            QualityUnqualified info = qualityUnqualifiedMapper.selectById(id);
+            Map<String, Object> data = new HashMap<>();
+            data.put("productName", info.getProductName());
+            data.put("model", info.getModel());
+
+            // 鍔犺浇妯℃澘
+            inputStream = getClass().getResourceAsStream("/static/return-record.docx");
+            if (inputStream == null) {
+                throw new RuntimeException("妯℃澘鏂囦欢涓嶅瓨鍦紝璇锋鏌ヨ矾寰勶細/static/return-record.docx");
+            }
+
+            // 娓叉煋妯℃澘
+            template = XWPFTemplate.compile(inputStream).render(data);
+
+            // 璁剧疆鍝嶅簲澶�
+            response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+            response.setHeader("Content-Disposition", "attachment; filename=rework_record_" + id + ".docx");
+            response.setContentLengthLong(-1);
+
+            out = response.getOutputStream();
+            template.write(out);
+            out.flush();
+        } catch (Exception e) {
+            throw new RuntimeException("涓嬭浇澶辫触", e);
+        } finally {
+            if (template != null) {
+                try {
+                    template.close();
+                } catch (Exception e) {
+                    log.error("鍏抽棴妯℃澘澶辫触", e);
+                }
+            }
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (Exception e) {
+                    log.error("鍏抽棴杈撳叆娴佸け璐�", e);
+                }
+            }
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (Exception e) {
+                    log.error("鍏抽棴杈撳嚭娴佸け璐�", e);
+                }
+            }
+        }
+    }
 }

--
Gitblit v1.9.3