From a60fcc67d5df419fecaf19c80556ae519bb5ecc9 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 23 六月 2026 13:25:28 +0800
Subject: [PATCH] fix:首页待办事项

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   92 +++++++++++++++++++++++++++++++---------------
 1 files changed, 62 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index d3c21a2..8aa7871 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -18,7 +18,11 @@
 import com.ruoyi.account.pojo.purchase.AccountPurchasePayment;
 import com.ruoyi.account.pojo.sales.AccountSalesCollection;
 import com.ruoyi.approve.mapper.ApproveProcessMapper;
+import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
+import com.ruoyi.approve.mapper.ApprovalTaskMapper;
 import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.pojo.ApprovalInstance;
+import com.ruoyi.approve.pojo.ApprovalTask;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.mapper.ProductMapper;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
@@ -28,6 +32,7 @@
 import com.ruoyi.collaborativeApproval.mapper.NoticeMapper;
 import com.ruoyi.collaborativeApproval.pojo.Notice;
 import com.ruoyi.common.enums.ApproveTypeEnum;
+import com.ruoyi.common.enums.TypeEnums;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.device.mapper.DeviceRepairMapper;
@@ -97,6 +102,10 @@
     private final QualityInspectMapper qualityStatisticsMapper;
 
     private final ApproveProcessMapper approveProcessMapper;
+
+    private final ApprovalTaskMapper approvalTaskMapper;
+
+    private final ApprovalInstanceMapper approvalInstanceMapper;
 
     private final SysDeptMapper sysDeptMapper;
 
@@ -384,40 +393,58 @@
     @Override
     public List<ApproveProcess> todos() throws ParseException {
         LoginUser loginUser = SecurityUtils.getLoginUser();
+        List<ApproveProcess> approveProcesses = new ArrayList<>();
+
+        // 鏌ヨ鏃у鎵硅〃锛坅pprove_process锛�
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveDelete, 0)
                 .eq(ApproveProcess::getApproveUserCurrentId, loginUser.getUserId())
                 .ne(ApproveProcess::getApproveStatus, 2);
-        // .eq(ApproveProcess::getTenantId, loginUser.getTenantId());
-        List<ApproveProcess> approveProcesses = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
-        if (CollectionUtils.isEmpty(approveProcesses)) {
-            approveProcesses = new ArrayList<>();
+        List<ApproveProcess> oldList = approveProcessMapper.selectList(approveProcessLambdaQueryWrapper);
+        if (!CollectionUtils.isEmpty(oldList)) {
+            oldList.forEach(a -> {
+                if (a.getApproveType() != null) {
+                    a.setApproveTypeName(ApproveTypeEnum.getNameByCode(a.getApproveType()));
+                }
+            });
+            approveProcesses.addAll(oldList);
         }
 
-        approveProcesses.forEach(a -> {
-            if (a.getApproveType() != null) {
-                a.setApproveTypeName(ApproveTypeEnum.getNameByCode(a.getApproveType()));
+        // 鏌ヨ鏂板鎵硅〃锛坅pproval_task + approval_instance锛�
+        List<ApprovalTask> pendingTasks = approvalTaskMapper.selectList(new LambdaQueryWrapper<ApprovalTask>()
+                .eq(ApprovalTask::getApproverId, loginUser.getUserId())
+                .eq(ApprovalTask::getTaskStatus, "PENDING")
+                .eq(ApprovalTask::getDeleted, 0));
+        if (!CollectionUtils.isEmpty(pendingTasks)) {
+            List<Long> instanceIds = pendingTasks.stream()
+                    .map(ApprovalTask::getInstanceId)
+                    .distinct()
+                    .collect(Collectors.toList());
+            List<ApprovalInstance> instances = approvalInstanceMapper.selectList(new LambdaQueryWrapper<ApprovalInstance>()
+                    .in(ApprovalInstance::getId, instanceIds)
+                    .eq(ApprovalInstance::getDeleted, 0));
+            Map<Long, ApprovalInstance> instanceMap = instances.stream()
+                    .collect(Collectors.toMap(ApprovalInstance::getId, i -> i, (a, b) -> a));
+
+            for (ApprovalTask task : pendingTasks) {
+                ApprovalInstance instance = instanceMap.get(task.getInstanceId());
+                if (instance == null) {
+                    continue;
+                }
+                ApproveProcess ap = new ApproveProcess();
+                ap.setId(instance.getId());
+                ap.setApproveId(instance.getInstanceNo());
+                ap.setApproveReason(instance.getTitle());
+                ap.setApproveTime(instance.getApplyTime() != null ? java.sql.Timestamp.valueOf(instance.getApplyTime()) : null);
+                ap.setApproveUserName(instance.getApplicantName());
+                ap.setApproveDeptName(instance.getTemplateName());
+                if (instance.getBusinessType() != null) {
+                    ap.setApproveType(instance.getBusinessType().intValue());
+                    ap.setApproveTypeName(TypeEnums.getLabelByValue(instance.getBusinessType()));
+                }
+                approveProcesses.add(ap);
             }
-        });
-        // // 鏌ヨ鏈鐢ㄥ姵淇濊褰�
-        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-        //
-        // LaborIssue laborIssue1 = new LaborIssue();
-        // laborIssue1.setAdoptedDate(new Date());
-        // laborIssue1.setIssueDate(sdf.parse(sdf.format(new Date())));
-        // List<LaborIssue> laborIssues = lavorIssueMapper.list(laborIssue1);
-        // //staff_join_leave_record琛ㄨ鍒犻櫎
-        // if(!CollectionUtils.isEmpty(laborIssues)){
-        // for (LaborIssue laborIssue : laborIssues) {
-        // ApproveProcess approveProcess = new ApproveProcess();
-        // approveProcess.setApproveId(laborIssue.getOrderNo());
-        // approveProcess.setApproveDeptName(sysDeptMapper.selectDeptById(loginUser.getTenantId()).getDeptName());
-        // approveProcess.setApproveTime(laborIssue.getIssueDate());
-        // approveProcess.setApproveReason(laborIssue.getDictTypeName() + "-" +
-        // laborIssue.getDictName() + "瓒呮椂鏈鍙�");
-        // approveProcesses.add(approveProcess);
-        // }
-        // }
+        }
 
         return approveProcesses;
     }
@@ -470,18 +497,23 @@
 
     @Override
     public Map<String, Object> approveAndDeviceTodos() {
-        // 瀹℃壒鍗忓悓寰呭姙
-        Long aLong = approveProcessMapper.selectCount(new LambdaQueryWrapper<ApproveProcess>()
+        // 鏃у鎵硅〃寰呭姙
+        Long oldCount = approveProcessMapper.selectCount(new LambdaQueryWrapper<ApproveProcess>()
                 .eq(ApproveProcess::getApproveUserCurrentId, SecurityUtils.getUserId())
                 .eq(ApproveProcess::getApproveDelete, 0)
                 .in(ApproveProcess::getApproveStatus, 0, 1, 3));
+        // 鏂板鎵硅〃寰呭姙
+        Long newCount = approvalTaskMapper.selectCount(new LambdaQueryWrapper<ApprovalTask>()
+                .eq(ApprovalTask::getApproverId, SecurityUtils.getUserId())
+                .eq(ApprovalTask::getTaskStatus, "PENDING")
+                .eq(ApprovalTask::getDeleted, 0));
         // 璁惧鎶ヤ慨寰呭姙
         Long aLong1 = deviceRepairMapper.selectCount(new LambdaQueryWrapper<DeviceRepair>()
                 .eq(DeviceRepair::getStatus, 0)
                 .eq(DeviceRepair::getRepairName, SecurityUtils.getLoginUser().getNickName()));
         return new HashMap<String, Object>() {
             {
-                put("approveTodo", aLong);
+                put("approveTodo", oldCount + newCount);
                 put("deviceRepairTodo", aLong1);
             }
         };

--
Gitblit v1.9.3