From 1c518e10a50050d383e714b581c94dea58ec4d67 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 22 五月 2026 18:01:34 +0800
Subject: [PATCH] fix(approve): 修复审批实例查询条件及流程控制问题

---
 src/main/java/com/ruoyi/collaborativeApproval/service/impl/EnterpriseNewsServiceImpl.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/EnterpriseNewsServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/EnterpriseNewsServiceImpl.java
index 2cf7fae..2d89e2c 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/EnterpriseNewsServiceImpl.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/EnterpriseNewsServiceImpl.java
@@ -9,7 +9,11 @@
 import com.ruoyi.approve.pojo.ApprovalInstance;
 import com.ruoyi.approve.pojo.ApprovalTask;
 import com.ruoyi.approve.pojo.ApprovalTemplate;
+import com.ruoyi.approve.service.ApprovalInstanceService;
 import com.ruoyi.approve.utils.ApproveProcessConfigNodeUtils;
+import com.ruoyi.basic.enums.ApplicationTypeEnum;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.collaborativeApproval.dto.EnterpriseNewsDto;
 import com.ruoyi.collaborativeApproval.mapper.EnterpriseNewsMapper;
 import com.ruoyi.collaborativeApproval.pojo.EnterpriseNews;
@@ -69,13 +73,19 @@
     private final SysDeptMapper sysDeptMapper;
     private final SysUserDeptMapper sysUserDeptMapper;
     private final ApprovalInstanceMapper approvalInstanceMapper;
+    private final ApprovalInstanceService approvalInstanceService;
     private final ApprovalTemplateMapper approvalTemplateMapper;
     private final ApproveProcessConfigNodeUtils approveProcessConfigNodeUtils;
     private final ISysNoticeService sysNoticeService;
+    private final FileUtil fileUtil;
 
     @Override
     public IPage<EnterpriseNewsVo> listPage(Page<EnterpriseNewsVo> page, EnterpriseNewsDto enterpriseNewsDto) {
-        return enterpriseNewsMapper.listPage(page, enterpriseNewsDto);
+        IPage<EnterpriseNewsVo> enterpriseNewsVoIPage = enterpriseNewsMapper.listPage(page, enterpriseNewsDto);
+        enterpriseNewsVoIPage.getRecords().forEach(enterpriseNewsVo -> {
+            enterpriseNewsVo.setStorageBlobDTOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.ENTERPRISE_NEWS, enterpriseNewsVo.getId()));
+        });
+        return enterpriseNewsVoIPage;
     }
 
     @Override
@@ -107,6 +117,8 @@
         if (STATUS_PENDING.equals(enterpriseNews.getStatus())) {
             startEnterpriseNewsApproval(enterpriseNews, enterpriseNewsDto);
         }
+        //娣诲姞闄勪欢
+        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.ENTERPRISE_NEWS, enterpriseNews.getId(), enterpriseNewsDto.getStorageBlobDTOs());
         return true;
     }
 
@@ -148,8 +160,9 @@
 
         clearReadScopeRelations(enterpriseNews.getId());
         saveReadScopeRelations(enterpriseNews.getId(), readScope, deptIds, userIds);
-
+        fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.ENTERPRISE_NEWS, enterpriseNews.getId(), enterpriseNewsDto.getStorageBlobDTOs());
         if (STATUS_PENDING.equals(enterpriseNews.getStatus())) {
+            resetEnterpriseNewsApprovalFlow(oldEnterpriseNews);
             startEnterpriseNewsApproval(enterpriseNews, enterpriseNewsDto);
         }
         return true;
@@ -308,6 +321,24 @@
                 .eq(EnterpriseNewsScopeUser::getNewsId, newsId));
     }
 
+    private void resetEnterpriseNewsApprovalFlow(EnterpriseNews oldEnterpriseNews) {
+        if (oldEnterpriseNews == null || !STATUS_DRAFT.equals(oldEnterpriseNews.getStatus())) {
+            return;
+        }
+        List<Long> approvalInstanceIds = approvalInstanceMapper.selectList(new LambdaQueryWrapper<ApprovalInstance>()
+                        .eq(ApprovalInstance::getBusinessId, oldEnterpriseNews.getId())
+                        .eq(ApprovalInstance::getBusinessType, TypeEnums.ENTERPRISE_NEWS_APPROVAL.getCode())
+                        .eq(ApprovalInstance::getDeleted, (byte) 0))
+                .stream()
+                .map(ApprovalInstance::getId)
+                .filter(id -> id != null && id > 0)
+                .collect(Collectors.toList());
+        if (StringUtils.isEmpty(approvalInstanceIds)) {
+            return;
+        }
+        approvalInstanceService.delete(approvalInstanceIds);
+    }
+
     private List<Long> distinctIds(List<Long> ids) {
         if (StringUtils.isEmpty(ids)) {
             return new ArrayList<>();
@@ -372,7 +403,7 @@
 
         String title = StringUtils.isNotEmpty(instance.getTemplateName()) ? instance.getTemplateName() : "瀹℃壒鎻愰啋";
         String message = "瀹℃壒鍗曞彿 " + instance.getInstanceNo() + " 闇�瑕佹偍瀹℃壒";
-        String jumpPath = "/approvalInstance?id=" + instance.getId();
+        String jumpPath = "/officeProcessAutomation/ApproveManage/approve-list/?id=" + instance.getId();
         sysNoticeService.simpleNoticeByUser(title, message, approverIds, jumpPath);
     }
 }

--
Gitblit v1.9.3