From 9398b7743fa976b016dfbb2b9cf4a04db340508e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 09 十月 2025 11:56:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java |   87 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 81 insertions(+), 6 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 d090997..549aa10 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
@@ -84,6 +84,8 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -108,7 +110,8 @@
  */
 @RestController
 @RequestMapping("/oa-approval-flow-audit")
-@Api(tags = "我审批的/我发起的/通用审批接口")
+@Api(tags = "我审批的-我发起的-通用审批接口")
+@Slf4j
 public class OaApprovalFlowAuditController {
     @Resource
     private OaApprovalTodoService approvalTodoService;
@@ -226,6 +229,8 @@
         List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
         for (OaApprovalApplications approvalApplication : approvalApplications) {
             ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+            approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+            approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
             approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
             switch (approvalTodoVO.getApprovalCategory()){
                 case 1:
@@ -243,7 +248,7 @@
             }
             SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
             if (sysUser!=null){
-                approvalTodoVO.setApplyUserName(sysUser.getUserName());
+                approvalTodoVO.setApplyUserName(sysUser.getNickName());
                 TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
                 if (tDept!=null){
                     approvalTodoVO.setApplyDeptName(tDept.getDeptName());
@@ -257,17 +262,25 @@
                 case 5:
                     OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationPurchase!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationPurchase.getTitle());
+
                         approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
                     }
                     break;
                 case 6:
                     OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationStorage!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationStorage.getTitle());
+
                         approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
                     }
                     break;
                 case 7:
                     StringBuilder temp = new StringBuilder();
+                    OaApprovalApplicationAsset oaApprovalApplicationAsset = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAsset!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAsset.getTitle());
+                    }
                     List<OaApprovalApplicationAssetItem> oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetItems!=null){
                         for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
@@ -287,24 +300,32 @@
                 case 8:
                     OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetOut!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAssetOut.getTitle());
+
                         approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
                     }
                     break;
                 case 9:
                     OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetBack!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
+
                         approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
                     }
                     break;
                 case 10:
                     OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationDispose!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationDispose.getTitle());
+
                         approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
                     }
                     break;
                 case 11:
                     OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationChange!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationChange.getTitle());
+
                         Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
                         TDept tDept = deptMap.get(ownershipDeptId);
                         if (tDept!=null){
@@ -315,12 +336,14 @@
                 case 12:
                     OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationReimbursement!=null){
+                        approvalTodoVO.setType(oaApprovalApplicationReimbursement.getType());
                         approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
                     }
                     break;
                 case 13:
                     OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationMoney!=null){
+                        approvalTodoVO.setProjectName(oaApprovalApplicationMoney.getProjectName());
                         approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
                         approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
 
@@ -329,6 +352,8 @@
                 case 15:
                     OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationPayment!=null){
+                        // todo 当前阶段没有项目id 后续完善
+                        approvalTodoVO.setProjectName("项目名称");
                         approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
                         approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
 
@@ -337,6 +362,7 @@
                 case 17:
                     OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAdvertisement!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                         approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                         approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                     }
@@ -404,6 +430,8 @@
         List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
         for (OaApprovalApplications approvalApplication : approvalApplications) {
             ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+            approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+            approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
             approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
             switch (approvalTodoVO.getApprovalCategory()){
                 case 1:
@@ -421,7 +449,7 @@
             }
             SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
             if (sysUser!=null){
-                approvalTodoVO.setApplyUserName(sysUser.getUserName());
+                approvalTodoVO.setApplyUserName(sysUser.getNickName());
                 TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
                 if (tDept!=null){
                     approvalTodoVO.setApplyDeptName(tDept.getDeptName());
@@ -435,17 +463,25 @@
                 case 5:
                     OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationPurchase!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationPurchase.getTitle());
+
                         approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
                     }
                     break;
                 case 6:
                     OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationStorage!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationStorage.getTitle());
+
                         approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
                     }
                     break;
                 case 7:
                     StringBuilder temp = new StringBuilder();
+                    OaApprovalApplicationAsset oaApprovalApplicationAsset = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAsset!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAsset.getTitle());
+                    }
                     List<OaApprovalApplicationAssetItem> oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetItems!=null){
                         for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
@@ -465,24 +501,32 @@
                 case 8:
                     OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetOut!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAssetOut.getTitle());
+
                         approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
                     }
                     break;
                 case 9:
                     OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAssetBack!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
+
                         approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
                     }
                     break;
                 case 10:
                     OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationDispose!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationDispose.getTitle());
+
                         approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
                     }
                     break;
                 case 11:
                     OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationChange!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationChange.getTitle());
+
                         Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
                         TDept tDept = deptMap.get(ownershipDeptId);
                         if (tDept!=null){
@@ -493,12 +537,14 @@
                 case 12:
                     OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationReimbursement!=null){
+                        approvalTodoVO.setType(oaApprovalApplicationReimbursement.getType());
                         approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
                     }
                     break;
                 case 13:
                     OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationMoney!=null){
+                        approvalTodoVO.setProjectName(oaApprovalApplicationMoney.getProjectName());
                         approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
                         approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
 
@@ -507,6 +553,8 @@
                 case 15:
                     OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationPayment!=null){
+                        // todo 当前阶段没有项目id 后续完善
+                        approvalTodoVO.setProjectName("项目名称");
                         approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
                         approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
 
@@ -515,6 +563,7 @@
                 case 17:
                     OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                     if (oaApprovalApplicationAdvertisement!=null){
+                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                         approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                         approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                     }
@@ -532,6 +581,7 @@
     @Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT)
     @ApiOperation(value = "通用审批接口")
     @PostMapping(value = "/audit")
+    @Transactional
     public R addLeave(@RequestBody AuditDTO dto) {
 
         OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId());
@@ -570,6 +620,7 @@
         approvalFlowAudit.setReason(dto.getReason());
         approvalFlowAuditService.save(approvalFlowAudit);
         List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId())
+                .eq(OaApprovalFlowNode::getStatus,1)
                 .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
         if (dto.getApprovalStatus() == 1) {
             // 判断当前是否处于最后一个节点
@@ -584,6 +635,26 @@
                     List<Integer> AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList());
                     List<AssetMain> assetMains = assetMainService.lambdaQuery().in(AssetMain::getId, AssetMainIds).list();
                     switch (approval.getApprovalCategory()) {
+                        case 9:
+                            // 借用归还资产条数
+                            List<OaApprovalApplicationAssetItem> back = approvalApplicationAssetItemService.lambdaQuery()
+                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId())
+                                    .list();
+                           // 借用资产条数
+                            OaApprovalApplicationAsset borrowApplications = approvalApplicationAssetService.lambdaQuery()
+                                    .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
+                                    .last("limit 1").one();
+                            List<OaApprovalApplicationAssetItem> borrow = approvalApplicationAssetItemService.lambdaQuery()
+                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, borrowApplications.getId())
+                                    .list();
+                            if (back.size()==borrow.size()){
+                                borrowApplications.setReturnStatus(2);
+                            }else if (!back.isEmpty()){
+                                borrowApplications.setReturnStatus(1);
+                            }else{
+                                borrowApplications.setReturnStatus(0);
+                            }
+                            approvalApplicationAssetService.updateById(borrowApplications);
                         case 10:
                             assetMains.forEach(assetMain -> {
                                 assetMain.setDisposed(1);
@@ -607,14 +678,18 @@
                     assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId());
                 }
             } else {
+                log.info("不为最后一个审批节点");
                 // 生成下一个节点的待办事项
                 for (int i = 0; i < approvalFlowNodes.size(); i++) {
-                    if (approvalApplications.getCurrentFlowNodeId()
-                            .equals(approvalFlowNodes.get(i).getId())) {
+                    if (approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(i).getId())) {
+                        log.info("匹配到审批流程,进入下一节点,当前节点id:{}", approvalFlowNodes.get(i));
+                        // 申请单审批流程修改为下一节点
                         approvalApplications.setCurrentFlowNodeId(approvalFlowNodes.get(i + 1).getId());
-                        OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodeService.getById(approvalFlowNodes.get(i + 1).getId());
+                        approvalApplicationsService.updateById(approvalApplications);
+                        OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodes.get(i + 1);
                         approvalTodoService.createApprovalTodos(approvalApplications.getId(),
                                 approvalApplications.getApplicationCode(), oaApprovalFlowNode1, approvalApplications.getDeptId());
+                        break;
                     }
                 }
             }

--
Gitblit v1.7.1