From 9cd4074a456fd5c422506279191b6015836347e5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 30 十月 2026 10:08:35 +0800
Subject: [PATCH] feat: 设备台账启用状态、审批签核展示与导入健壮性

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

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
index 8d7477b..0da8831 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalInstanceServiceImpl.java
@@ -111,7 +111,6 @@
                 if (TypeEnums.PURCHASE_APPROVAL.getCode().equals(vo.getBusinessType())) {
                     // 閲囪喘瀹℃壒 - 鏌ヨ閲囪喘鍗曞彿
                     PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(vo.getBusinessId());
-                    System.out.println("涓氬姟绫诲瀷锛�" + purchaseLedger.getPurchaseContractNumber());
                     if (purchaseLedger != null) {
                         vo.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
                     }
@@ -150,10 +149,23 @@
                             .eq(ApprovalTask::getDeleted, 0)
             ).stream().collect(Collectors.groupingBy(ApprovalTask::getInstanceId));
 
+            // 浠诲姟琛ㄦ湰韬笉瀛樺鎵规柟寮忥紝鎸夎妭鐐瑰疄渚嬪洖濉細绛�/鎴栫锛岄伩鍏嶅墠绔粺涓�鏄剧ず涓轰細绛�
+            Map<Long, String> nodeApproveTypeMap = approvalInstanceNodeService.list(
+                    Wrappers.<ApprovalInstanceNode>lambdaQuery()
+                            .in(ApprovalInstanceNode::getInstanceId, instanceIds)
+                            .eq(ApprovalInstanceNode::getDeleted, 0)
+            ).stream().collect(Collectors.toMap(
+                    ApprovalInstanceNode::getId,
+                    node -> node.getApproveType() == null ? "" : node.getApproveType(),
+                    (existing, replacement) -> existing
+            ));
+
             for (ApprovalInstanceVo vo : records) {
                 vo.setIsApprove(approveProcessConfigNodeUtils.isCurrentApprover(vo.getId(), currentUserId));
                 vo.setRecords(recordMap.getOrDefault(vo.getId(), new ArrayList<>()));
-                vo.setTasks(taskMap.getOrDefault(vo.getId(), new ArrayList<>()));
+                List<ApprovalTask> instanceTasks = taskMap.getOrDefault(vo.getId(), new ArrayList<>());
+                instanceTasks.forEach(task -> task.setApproveType(nodeApproveTypeMap.get(task.getNodeId())));
+                vo.setTasks(instanceTasks);
                 vo.setStorageBlobVOList(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.APPROVAL_INSTANCE, vo.getId()));
             }
 
@@ -745,10 +757,29 @@
 
         String title = StringUtils.hasText(instance.getTemplateName()) ? instance.getTemplateName() : "瀹℃壒鎻愰啋";
         String message = "瀹℃壒鍗曞彿 " + instance.getInstanceNo() + " 闇�瑕佹偍瀹℃壒";
-        String jumpPath = "/officeProcessAutomation/ApproveManage/approve-list?id=" + instance.getId();
+        String jumpPath = getJumpPathByBusinessType(instance.getBusinessType(), instance.getId());
         sysNoticeService.simpleNoticeByUser(title, message, approverIds, jumpPath);
     }
 
+    private String getJumpPathByBusinessType(Long businessType, Long instanceId) {
+        if (businessType == null) {
+            return "/collaborativeApproval/approve-list?id=" + instanceId;
+        }
+        if (TypeEnums.LEAVE_APPROVAL.getCode().equals(businessType)) {
+            return "/collaborativeApproval/AttendManage/leave-apply?id=" + instanceId;
+        }
+        if (TypeEnums.OVERTIME_APPROVAL.getCode().equals(businessType)) {
+            return "/collaborativeApproval/AttendManage/overtime-apply?id=" + instanceId;
+        }
+        if (TypeEnums.TRAVEL_REIMBURSEMENT_APPROVAL.getCode().equals(businessType)) {
+            return "/collaborativeApproval/ReimburseManage/travel-reimburse?id=" + instanceId;
+        }
+        if (TypeEnums.EXPENSE_APPROVAL.getCode().equals(businessType)) {
+            return "/collaborativeApproval/ReimburseManage/cost-reimburse?id=" + instanceId;
+        }
+        return "/collaborativeApproval/approve-list?id=" + instanceId;
+    }
+
     private void sendEnterpriseNewsNotice(Long newsId) {
         EnterpriseNews enterpriseNews = enterpriseNewsMapper.selectById(newsId);
         if (enterpriseNews == null) {

--
Gitblit v1.9.3