From c6eb0d852595f235b21520dab1d8600ed1b80776 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 04 九月 2026 14:44:21 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java
index ffba036..712c693 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/template/MesQcTemplateItemServiceImpl.java
@@ -12,13 +12,18 @@
 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.qc.template.MesQcTemplateItemMapper;
 import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService;
+import cn.iocoder.yudao.module.mes.service.pro.task.MesProTaskService;
+import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
 import jakarta.annotation.Resource;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
@@ -28,7 +33,7 @@
 /**
  * MES 璐ㄦ鏂规-浜у搧鍏宠仈 Service 瀹炵幇绫�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Service
 @Validated
@@ -42,6 +47,12 @@
     private MesQcTemplateService templateService;
     @Resource
     private MesMdItemService mesMdItemService;
+    @Resource
+    @Lazy
+    private MesProTaskService proTaskService;
+    @Resource
+    @Lazy
+    private MesProWorkOrderService proWorkOrderService;
 
     @Override
     public Long createTemplateItem(MesQcTemplateItemSaveReqVO createReqVO) {
@@ -116,23 +127,46 @@
 
     @Override
     public MesQcTemplateItemDO getRequiredTemplateByItemIdAndType(Long itemId, Integer qcType) {
-        // 1. 鏌ュ嚭 itemId 鍏宠仈鐨勬墍鏈� templateItem
-        MesMdItemDO item1 = mesMdItemService.getItem(itemId);
-        List<MesQcTemplateItemDO> templateItems = templateItemMapper.selectListByItemId(item1.getMdmItemId());
+        List<MesQcTemplateItemDO> templateItems = getTemplateItemList(itemId, qcType, null, null);
         if (CollUtil.isEmpty(templateItems)) {
             throw exception(QC_NO_TEMPLATE);
         }
-        // 2. 绛涢�� types 鍖呭惈 qcType 涓旂姸鎬佷负寮�鍚殑妯℃澘
+        return templateItems.get(0);
+    }
+
+    @Override
+    public List<MesQcTemplateItemDO> getTemplateItemList(Long itemId, Integer qcType, Long workOrderId, Long taskId) {
+        // 1. 瑙f瀽鐪熷疄浜у搧鐗╂枡 ID锛氫换鍔′紭鍏堬紝鍏舵宸ュ崟锛屾渶鍚庣洿鎺ョ敤鍏ュ弬
+        Long resolvedItemId = itemId;
+        if (taskId != null) {
+            resolvedItemId = proTaskService.validateTaskExists(taskId).getItemId();
+        } else if (workOrderId != null) {
+            resolvedItemId = proWorkOrderService.validateWorkOrderExists(workOrderId).getProductId();
+        }
+        if (resolvedItemId == null) {
+            return Collections.emptyList();
+        }
+        // 2. mes_md_item.id 杞� mdm_item.id锛堜骇鍝佸叧鑱旇〃瀛樼殑鏄� mdm 鐗╂枡锛�
+        MesMdItemDO item = mesMdItemService.getItem(resolvedItemId);
+        if (item == null || item.getMdmItemId() == null) {
+            return Collections.emptyList();
+        }
+        // 3. 鏌ュ嚭璇ョ墿鏂欏叧鑱旂殑鎵�鏈変骇鍝佸叧鑱�
+        List<MesQcTemplateItemDO> templateItems = templateItemMapper.selectListByItemId(item.getMdmItemId());
+        if (CollUtil.isEmpty(templateItems)) {
+            return Collections.emptyList();
+        }
+        // 4. 杩囨护锛氭柟妗堝惎鐢ㄤ笖妫�娴嬬绫诲寘鍚� qcType锛岃繑鍥炲叏閮ㄥ尮閰嶉」
         List<MesQcTemplateDO> templates = templateService.getTemplateList(
                 convertSet(templateItems, MesQcTemplateItemDO::getTemplateId));
-        MesQcTemplateDO matchedTemplate = findFirst(templates,
-                t -> CommonStatusEnum.isEnable(t.getStatus()) && CollUtil.contains(t.getTypes(), qcType));
-        if (matchedTemplate == null) {
-            throw exception(QC_NO_TEMPLATE);
-        }
-        // 3. 杩斿洖瀵瑰簲鐨� templateItem
-        return findFirst(templateItems,
-                item -> Objects.equals(item.getTemplateId(), matchedTemplate.getId()));
+        Set<Long> matchedTemplateIds = templates.stream()
+                .filter(t -> CommonStatusEnum.isEnable(t.getStatus())
+                        && CollUtil.contains(t.getTypes(), qcType))
+                .map(MesQcTemplateDO::getId)
+                .collect(Collectors.toSet());
+        return templateItems.stream()
+                .filter(t -> matchedTemplateIds.contains(t.getTemplateId()))
+                .collect(Collectors.toList());
     }
 
 }

--
Gitblit v1.9.3