From 1e123568c2f561013f5636e45dc0db30b17a3517 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 10 九月 2026 16:39:26 +0800
Subject: [PATCH] feat(basic): 添加产品条码功能并完善生产统计报表

---
 src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java |   33 +++++++++++++++++++++++++++++++--
 1 files changed, 31 insertions(+), 2 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 b3d93b8..f564b9d 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.procurementrecord.utils.StockUtils;
@@ -30,12 +31,15 @@
 import com.ruoyi.stock.service.StockUninventoryService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import jakarta.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -68,9 +72,28 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int deal(QualityUnqualified qualityUnqualified) {
         QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
+        if (unqualified == null) {
+            throw new ServiceException("涓嶅悎鏍艰褰曚笉瀛樺湪");
+        }
+        //骞傜瓑锛氬凡澶勭悊鐨勪笉鍏佽閲嶅澶勭悊锛岄槻姝㈤噸澶嶅叆搴�/閲嶅鎶ュ伐鍗�
+        if (Integer.valueOf(1).equals(unqualified.getInspectState())) {
+            throw new ServiceException("璇ヤ笉鍚堟牸璁板綍宸插鐞嗭紝璇峰嬁閲嶅鎿嶄綔");
+        }
+        if (ObjectUtils.isNull(qualityUnqualified.getDealResult())) {
+            throw new ServiceException("璇烽�夋嫨澶勭悊缁撴灉");
+        }
         QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
+        //澶勭悊缁撴灉鏋氫妇鏍¢獙锛氬師鏉愭枡浠呮姤搴�/璁╂鏀捐锛涜繃绋�/鍑哄巶妫�棰濆鏀寔杩斾慨/杩斿伐
+        List<String> allowedResults = new ArrayList<>(Arrays.asList("鎶ュ簾", "璁╂鏀捐"));
+        if (qualityInspect == null || qualityInspect.getInspectType() == null || qualityInspect.getInspectType() != 0) {
+            allowedResults.addAll(Arrays.asList("杩斾慨", "杩斿伐"));
+        }
+        if (!allowedResults.contains(qualityUnqualified.getDealResult())) {
+            throw new ServiceException("澶勭悊缁撴灉涓嶅悎娉曪紝浠呮敮鎸侊細" + String.join("/", allowedResults));
+        }
         String batchNo = qualityInspect == null ? null
                 : resolveProductionBatchNo(qualityInspect.getProductMainId(), qualityInspect.getId(), qualityInspect.getProductModelId());
         if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType() != 0) {
@@ -111,8 +134,14 @@
                     break;
             }
         }
-        qualityUnqualified.setInspectState(1);
-        return qualityUnqualifiedMapper.updateById(qualityUnqualified);
+        //浠ュ簱涓褰曚负鍑嗗洖鍐欙紝闃叉璇锋眰浣撶鏀规暟閲�/鐘舵�佺瓑瀛楁
+        unqualified.setDealResult(qualityUnqualified.getDealResult());
+        unqualified.setDealName(ObjectUtils.isNotNull(qualityUnqualified.getDealName())
+                ? qualityUnqualified.getDealName() : SecurityUtils.getUsername());
+        unqualified.setDealTime(qualityUnqualified.getDealTime() != null
+                ? qualityUnqualified.getDealTime() : new Date());
+        unqualified.setInspectState(1);
+        return qualityUnqualifiedMapper.updateById(unqualified);
     }
 
     @Override

--
Gitblit v1.9.3