From 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期六, 07 十一月 2026 08:50:53 +0800
Subject: [PATCH] feat: 完善质检、生产、销售、财务与人事模块并接入审批流程

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java
index 1163b31..8cceafd 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java
@@ -22,6 +22,7 @@
 import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService;
 import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcService;
 import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
+import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -67,6 +68,12 @@
     @Resource
     private DictDataApi dictDataApi;
 
+    @Resource
+    private StorageAttachmentApi storageAttachmentApi;
+
+    /** 杩囩▼妫�楠岃闄勪欢鐨勫瓨鍌ㄥ叧鑱旂被鍨嬶紙涓� MesQcAttachmentController 淇濇寔涓�鑷达級 */
+    private static final String IPQC_DETAIL_RECORD_TYPE = "mes_qc_ipqc_detail_attachment";
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Long createIndicatorResult(MesQcIndicatorResultSaveReqVO createReqVO) {
@@ -103,6 +110,27 @@
         List<MesQcIndicatorResultDetailDO> details = BeanUtils.toBean(updateReqVO.getItems(),
                 MesQcIndicatorResultDetailDO.class);
         resultDetailService.createOrUpdateDetailList(details);
+        // 2.3 杩囩▼妫�楠屾敮鎸佹墜宸ュ鍒犳楠岃锛氬垹闄ゆ湰娆℃湭鎻愪氦鐨勬槑缁嗭紝骞舵竻鐞嗗叾琛岄檮浠跺叧鑱�
+        if (MesQcTypeEnum.IPQC.getType().equals(updateReqVO.getQcType())) {
+            deleteIndicatorDetailsRemoved(updateReqVO.getId(), updateReqVO.getItems());
+        }
+    }
+
+    /**
+     * 鍒犻櫎鏈淇濆瓨涓凡琚Щ闄ょ殑杩囩▼妫�楠岃锛堣闄勪欢涓�骞惰В缁戯級
+     */
+    private void deleteIndicatorDetailsRemoved(Long resultId, List<MesQcIndicatorResultSaveReqVO.Item> items) {
+        Set<Long> keepIds = convertSet(items, MesQcIndicatorResultSaveReqVO.Item::getId);
+        List<Long> removedIds = resultDetailService.getDetailListByResultId(resultId).stream()
+                .map(MesQcIndicatorResultDetailDO::getId)
+                .filter(id -> id != null && !keepIds.contains(id))
+                .toList();
+        if (CollUtil.isEmpty(removedIds)) {
+            return;
+        }
+        removedIds.forEach(detailId ->
+                storageAttachmentApi.bindAttachments("file", IPQC_DETAIL_RECORD_TYPE, detailId, Collections.emptyList()));
+        resultDetailService.deleteDetailList(removedIds);
     }
 
     @Override

--
Gitblit v1.9.3