From 622a5566fbf4592698706c26e3816a95f265dc17 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期二, 25 八月 2026 16:30:32 +0800
Subject: [PATCH] feat(mes): 设计项目分页返回待审核文件数 pendingAuditCount,文件审核完成后才可提交审批

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectServiceImpl.java |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectServiceImpl.java
index 6648c60..aa655a4 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pd/project/MesPdProjectServiceImpl.java
@@ -343,6 +343,32 @@
         return projectMapper.selectList(new QueryWrapper<MesPdProjectDO>().lambda().eq(MesPdProjectDO::getProductCode,productCode).eq(MesPdProjectDO::getStatus, MesPdProjectStatusEnum.ARCHIVE.getStatus()));
     }
 
+    @Override
+    public Map<Long, Integer> getPendingAuditCountMap(Collection<Long> projectIds) {
+        if (CollUtil.isEmpty(projectIds)) {
+            return Collections.emptyMap();
+        }
+        // 1. 鎵归噺鏌ュ嚭杩欎簺椤圭洰涓嬬殑鎵�鏈夎祫鏂�
+        List<MesPdDocumentDO> documents = documentService.getDocumentListByProjectIds(projectIds);
+        if (CollUtil.isEmpty(documents)) {
+            return Collections.emptyMap();
+        }
+        // 2. 璧勬枡ID -> 椤圭洰ID
+        Map<Long, Long> documentProjectIdMap = convertMap(documents, MesPdDocumentDO::getId, MesPdDocumentDO::getProjectId);
+        // 3. 鎵归噺鏌ュ嚭鎵�鏈夊緟瀹℃牳璁板綍锛坅uditStatus=0锛�
+        List<MesPdDocumentAuditDO> pendingAudits =
+                documentAuditMapper.selectPendingAuditListByDocumentIds(documentProjectIdMap.keySet());
+        // 4. 鎸夐」鐩粺璁″緟瀹℃牳鏂囦欢鏁�
+        Map<Long, Integer> result = new HashMap<>();
+        for (MesPdDocumentAuditDO audit : pendingAudits) {
+            Long projectId = documentProjectIdMap.get(audit.getDocumentId());
+            if (projectId != null) {
+                result.merge(projectId, 1, Integer::sum);
+            }
+        }
+        return result;
+    }
+
     private void validateProjectInitiate(MesPdProjectDO project) {
         if (!MesPdProjectStatusEnum.INITIATE.getStatus().equals(project.getStatus())) {
             throw exception(PD_PROJECT_NOT_INITIATE);

--
Gitblit v1.9.3