From f769d817f8ba2522147c73fa93ccacdc3aab0cb6 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 24 十月 2025 18:15:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java |   93 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 80 insertions(+), 13 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
index 911b992..3ebd6e8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -169,10 +169,20 @@
         Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
         Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
         Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
-        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
+        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds)
+                .orderByDesc(OaApprovalApplications::getCreateTime).list();
+        Map<Integer, OaApprovalFlowAudit> auditMap = approvalFlowAuditService.lambdaQuery().in(OaApprovalFlowAudit::getApprovalApplicationId, applicationIds)
+                .eq(OaApprovalFlowAudit::getUserId, userId)
+                .list().stream().collect(Collectors.toMap(OaApprovalFlowAudit::getApprovalApplicationId, e -> e));
         for (OaApprovalApplications approvalApplication : approvalApplications) {
             ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
-            approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+            approvalTodoVO.setReason(approvalApplication.getReason());
+            OaApprovalFlowAudit approvalFlowAudit = auditMap.get(approvalApplication.getId());
+            if(approvalFlowAudit.getApprovalStatus()!=null){
+                approvalTodoVO.setApprovalStatus(approvalFlowAudit.getApprovalStatus()?2:3);
+            }else{
+                approvalTodoVO.setApprovalStatus(1);
+            }
             approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
             approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
             switch (approvalTodoVO.getApprovalCategory()){
@@ -253,7 +263,7 @@
                     if (oaApprovalApplicationAssetBack!=null){
                         approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
 
-                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getOperateTime());
                     }
                     break;
                 case 10:
@@ -370,9 +380,11 @@
         Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
         Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
         Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
-        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
+        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery()
+                .orderByDesc(OaApprovalApplications::getCreateTime).in(OaApprovalApplications::getId, applicationIds).list();
         for (OaApprovalApplications approvalApplication : approvalApplications) {
             ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+            approvalTodoVO.setReason(approvalApplication.getReason());
             approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
             approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
             approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
@@ -454,7 +466,7 @@
                     if (oaApprovalApplicationAssetBack!=null){
                         approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
 
-                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getOperateTime());
                     }
                     break;
                 case 10:
@@ -544,6 +556,7 @@
         if (dto.getApprovalStatus() == 0) {
             // 中断审批流程
             approvalApplications.setApprovalStatus(3);
+            approvalApplications.setReason(dto.getReason());
             approvalApplicationsService.updateById(approvalApplications);
             // 删除除当前审批人该申请单的未处理的所有待办
             approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
@@ -566,6 +579,11 @@
                 .eq(OaApprovalFlowNode::getStatus,1)
                 .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
         if (dto.getApprovalStatus() == 1) {
+            // 删除同节点待办事项
+            approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
+                    .ne(OaApprovalTodo::getUserId,userId)
+                    .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
+                    .eq(OaApprovalTodo::getFlowNodeId, currentFlowNodeId));
             // 判断当前是否处于最后一个节点
             if (approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(approvalFlowNodes.size() - 1).getId())) {
                 // 审批通过 审批流程结束
@@ -583,27 +601,72 @@
                             List<OaApprovalApplicationAssetItem> back = approvalApplicationAssetItemService.lambdaQuery()
                                     .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId())
                                     .list();
-                           // 借用资产条数
-                            OaApprovalApplicationAsset borrowApplications = approvalApplicationAssetService.lambdaQuery()
+                            OaApprovalApplicationAsset backAsset = approvalApplicationAssetService.lambdaQuery()
                                     .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
                                     .last("limit 1").one();
+                            // 借用资产条数
                             List<OaApprovalApplicationAssetItem> borrow = approvalApplicationAssetItemService.lambdaQuery()
-                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, borrowApplications.getId())
+                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, backAsset.getBorrowApplicationId())
                                     .list();
+                            List<AssetMain> list = assetMainService.lambdaQuery().in(AssetMain::getId, back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
+                                            .collect(Collectors.toList()))
+                                    .list();
+                            List<AssetMain> listBorrow = assetMainService.lambdaQuery().in(AssetMain::getId, borrow.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
+                                            .collect(Collectors.toList()))
+                                    .list();
+                            OaApprovalApplicationAsset borrowApplicationAsset = approvalApplicationAssetService.lambdaQuery()
+                                    .eq(OaApprovalApplicationAsset::getApprovalApplicationId, backAsset.getBorrowApplicationId())
+                                    .last("limit 1").one();
                             if (back.size()==borrow.size()){
-                                borrowApplications.setReturnStatus(2);
+                                for (AssetMain assetMain : list) {
+                                    assetMain.setBorrowed(0);
+                                    assetMain.setAssetStatus("闲置");
+                                }
+
+                                backAsset.setReturnStatus(2);
+                                borrowApplicationAsset.setReturnStatus(2);
                             }else if (!back.isEmpty()){
-                                borrowApplications.setReturnStatus(1);
+                                for (AssetMain assetMain : list) {
+                                    assetMain.setBorrowed(1);
+
+                                }
+                                backAsset.setReturnStatus(1);
+                                borrowApplicationAsset.setReturnStatus(1);
+
                             }else{
-                                borrowApplications.setReturnStatus(0);
+                                for (AssetMain assetMain : list) {
+                                    assetMain.setBorrowed(1);
+
+                                }
+                                backAsset.setReturnStatus(0);
+                                borrowApplicationAsset.setReturnStatus(0);
+
                             }
-                            approvalApplicationAssetService.updateById(borrowApplications);
+                            assetMainService.updateBatchById(list);
+
+
+                            approvalApplicationAssetService.updateById(backAsset);
+                            approvalApplicationAssetService.updateById(borrowApplicationAsset);
                             saveAssetRecord(0,ApprovalTypeEnum.RETURN.getDesc(),back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
                                     .collect(Collectors.toList()));
 
                         case 10:
+                            OaApprovalApplicationDispose approvalApplicationDispose = approvalApplicationDisposeService.lambdaQuery()
+                                    .eq(OaApprovalApplicationDispose::getApprovalApplicationId, approvalApplications.getId())
+                                    .last("limit 1").one();
                             assetMains.forEach(assetMain -> {
                                 assetMain.setDisposed(1);
+                                switch (approvalApplicationDispose.getDisposeType()){
+                                    case 0:
+                                        assetMain.setAssetStatus("报废");
+                                        break;
+                                    case 1:
+                                        assetMain.setAssetStatus("报损");
+                                        break;
+                                    case 2:
+                                        assetMain.setAssetStatus("捐赠");
+                                        break;
+                                }
                             });
                             saveAssetRecord(null,ApprovalTypeEnum.ASSET_DISPOSE.getDesc(),assetMains
                                     .stream().map(AssetMain::getId).collect(Collectors.toList()));
@@ -611,13 +674,17 @@
                         case 7:
                             assetMains.forEach(assetMain -> {
                                 assetMain.setInUse(1);
+                                assetMain.setAssetStatus("使用中");
                             });
                             saveAssetRecord(1,ApprovalTypeEnum.GRAB.getDesc(),assetMains
                                     .stream().map(AssetMain::getId).collect(Collectors.toList()));
                             break;
+
+
                         default:
                             assetMains.forEach(assetMain -> {
                                 assetMain.setBorrowed(1);
+                                assetMain.setAssetStatus("使用中");
                             });
                             saveAssetRecord(1,ApprovalTypeEnum.BORROW.getDesc(),assetMains
                                     .stream().map(AssetMain::getId).collect(Collectors.toList()));
@@ -659,7 +726,7 @@
 
     private  void saveAssetRecord(Integer type, String approvalType,List<Integer> assetMainIds) {
         List<AssetInventoryRecord> res = new ArrayList<>();
-        Map<Integer, Integer> warehouseMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, AssetMain::getWarehouseId));
+        Map<Integer, Integer> warehouseMap = assetMainService.lambdaQuery().isNotNull(AssetMain::getWarehouseId).list().stream().collect(Collectors.toMap(AssetMain::getId, AssetMain::getWarehouseId));
         for (Integer assetMainId : assetMainIds) {
             AssetInventoryRecord assetInventoryRecord = new AssetInventoryRecord();
             assetInventoryRecord.setAssetMainId(assetMainId);

--
Gitblit v1.7.1