From e56c1cce484cd8df8c3373d4e2b5847d11b09abe Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 23 九月 2025 14:08:10 +0800
Subject: [PATCH] 代码合并解决冲突 bug修改

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java |  515 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 496 insertions(+), 19 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 f3df0be..d090997 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
@@ -3,16 +3,89 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.TDept;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.framework.web.service.TokenService;
-import com.ruoyi.system.dto.AddLeaveDTO;
 import com.ruoyi.system.dto.AuditDTO;
-import com.ruoyi.system.model.*;
-import com.ruoyi.system.service.*;
+import com.ruoyi.system.emums.ApprovalTypeEnum;
+import com.ruoyi.system.model.AssetMain;
+import com.ruoyi.system.model.AssetType;
+import com.ruoyi.system.model.OaApproval;
+import com.ruoyi.system.model.OaApprovalApplicationAdvertisement;
+import com.ruoyi.system.model.OaApprovalApplicationAsset;
+import com.ruoyi.system.model.OaApprovalApplicationAssetItem;
+import com.ruoyi.system.model.OaApprovalApplicationAttendance;
+import com.ruoyi.system.model.OaApprovalApplicationChange;
+import com.ruoyi.system.model.OaApprovalApplicationContract;
+import com.ruoyi.system.model.OaApprovalApplicationDispose;
+import com.ruoyi.system.model.OaApprovalApplicationMoney;
+import com.ruoyi.system.model.OaApprovalApplicationPayment;
+import com.ruoyi.system.model.OaApprovalApplicationPurchase;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursement;
+import com.ruoyi.system.model.OaApprovalApplicationReimbursementItem;
+import com.ruoyi.system.model.OaApprovalApplicationStorage;
+import com.ruoyi.system.model.OaApprovalApplications;
+import com.ruoyi.system.model.OaApprovalFlowAudit;
+import com.ruoyi.system.model.OaApprovalFlowNode;
+import com.ruoyi.system.model.OaApprovalTodo;
+import com.ruoyi.system.query.ApprovalDetailQuery;
+import com.ruoyi.system.query.ApprovalTodoListQuery;
+import com.ruoyi.system.service.AssetMainService;
+import com.ruoyi.system.service.AssetTypeService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService;
+import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
+import com.ruoyi.system.service.OaApprovalApplicationAssetService;
+import com.ruoyi.system.service.OaApprovalApplicationAttendanceService;
+import com.ruoyi.system.service.OaApprovalApplicationChangeService;
+import com.ruoyi.system.service.OaApprovalApplicationContactService;
+import com.ruoyi.system.service.OaApprovalApplicationContractService;
+import com.ruoyi.system.service.OaApprovalApplicationDisposeService;
+import com.ruoyi.system.service.OaApprovalApplicationMoneyService;
+import com.ruoyi.system.service.OaApprovalApplicationPaymentService;
+import com.ruoyi.system.service.OaApprovalApplicationPurchaseItemService;
+import com.ruoyi.system.service.OaApprovalApplicationPurchaseService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService;
+import com.ruoyi.system.service.OaApprovalApplicationReimbursementService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
+import com.ruoyi.system.service.OaApprovalApplicationStorageService;
+import com.ruoyi.system.service.OaApprovalApplicationsService;
+import com.ruoyi.system.service.OaApprovalFlowAuditService;
+import com.ruoyi.system.service.OaApprovalFlowNodeService;
+import com.ruoyi.system.service.OaApprovalFlowService;
+import com.ruoyi.system.service.OaApprovalService;
+import com.ruoyi.system.service.OaApprovalTodoService;
+import com.ruoyi.system.service.TDeptService;
+import com.ruoyi.system.vo.AdvertisementDetailVO;
+import com.ruoyi.system.vo.ApprovalFlowNodeListVO;
+import com.ruoyi.system.vo.ApprovalTodoVO;
+import com.ruoyi.system.vo.BackDetailVO;
+import com.ruoyi.system.vo.BorrowDetailVO;
+import com.ruoyi.system.vo.BusinessTripDetailVO;
+import com.ruoyi.system.vo.ChangeDetailVO;
+import com.ruoyi.system.vo.ContactDetailVO;
+import com.ruoyi.system.vo.ContractDetailVO;
+import com.ruoyi.system.vo.DisposeDetailVO;
+import com.ruoyi.system.vo.GrabDetailVO;
+import com.ruoyi.system.vo.GrabListVO;
+import com.ruoyi.system.vo.LeaveDestroyDetailVO;
+import com.ruoyi.system.vo.LeaveDetailVO;
+import com.ruoyi.system.vo.MoneyDetailVO;
+import com.ruoyi.system.vo.OutDetailVO;
+import com.ruoyi.system.vo.PaymentDetailVO;
+import com.ruoyi.system.vo.PurchaseDetailVO;
+import com.ruoyi.system.vo.PurchaseListVO;
+import com.ruoyi.system.vo.ReimbursementDetailVO;
+import com.ruoyi.system.vo.StorageDetailVO;
+import com.ruoyi.system.vo.StorageListVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,7 +93,10 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -32,7 +108,7 @@
  */
 @RestController
 @RequestMapping("/oa-approval-flow-audit")
-@Api(tags = "通用审批接口")
+@Api(tags = "我审批的/我发起的/通用审批接口")
 public class OaApprovalFlowAuditController {
     @Resource
     private OaApprovalTodoService approvalTodoService;
@@ -42,6 +118,8 @@
     private OaApprovalApplicationStorageService approvalApplicationStorageService;
     @Resource
     private OaApprovalApplicationPurchaseService approvalApplicationPurchaseService;
+    @Resource
+    private OaApprovalApplicationPurchaseItemService approvalApplicationPurchaseItemService;
     @Resource
     private OaApprovalApplicationAssetItemService approvalApplicationAssetItemService;
     @Resource
@@ -64,6 +142,8 @@
     @Resource
     private AssetMainService assetMainService;
     @Resource
+    private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
+    @Resource
     private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
     @Resource
     private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService;
@@ -82,9 +162,370 @@
     @Resource
     private TDeptService deptService;
     @Resource
+    private AssetTypeService assetTypeService;
+    @Resource
     private OaApprovalTodoService oaApprovalTodoService;
     @Resource
-    private OaApprovalFlowService approvalFlowService;
+    private OaApprovalFlowService  approvalFlowService;
+
+
+
+    @ApiOperation("我审批的")
+    @PostMapping("/pageListAudit")
+    public R<PageInfo<ApprovalTodoVO>> pageList(@RequestBody ApprovalTodoListQuery query) {
+        List<ApprovalTodoVO> resList = new ArrayList<>();
+        Long userId = tokenService.getLoginUser().getUserId();
+        query.setUserId(userId);
+        PageInfo<ApprovalTodoVO> res = new PageInfo<>(query.getPageNum(), query.getPageSize());
+
+        PageInfo<OaApprovalTodo> pageInfo = approvalTodoService.pageListAudit(query);
+        List<OaApprovalTodo> list = pageInfo.getRecords();
+        if (list.isEmpty()){
+            return R.ok(new PageInfo<>());
+        }
+        res.setTotal(pageInfo.getTotal());
+        List<Integer> applicationIds = list.stream().map(OaApprovalTodo::getApplicationId).collect(Collectors.toList());
+        Map<Integer, OaApprovalApplicationReimbursement> approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery()
+                .in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationMoney> oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery()
+                .in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationPayment> approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery()
+                .in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationStorage> applicationStorageMap = approvalApplicationStorageService.lambdaQuery()
+                .in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationAsset> approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery()
+                .in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationDispose> approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery()
+                .in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationChange> approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery()
+                .in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationPurchase> approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery()
+                .in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e));
+        Map<Integer, List<OaApprovalApplicationAssetItem>> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
+                .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
+        Map<Integer, OaApprovalApplicationAdvertisement> approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
+                .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationAttendance> applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery()
+                .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
+
+        Map<Integer, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
+        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();
+        for (OaApprovalApplications approvalApplication : approvalApplications) {
+            ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+            approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
+            switch (approvalTodoVO.getApprovalCategory()){
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                default:
+                    OaApprovalApplicationAttendance oaApprovalApplicationAttendance = applicationAttendanceMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAttendance!=null){
+                        approvalTodoVO.setStartTime(oaApprovalApplicationAttendance.getStartTime());
+                        approvalTodoVO.setEndTime(oaApprovalApplicationAttendance.getEndTime());
+                        approvalTodoVO.setDuration(oaApprovalApplicationAttendance.getDuration());
+                    }
+                    break;
+            }
+            SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
+            if (sysUser!=null){
+                approvalTodoVO.setApplyUserName(sysUser.getUserName());
+                TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
+                if (tDept!=null){
+                    approvalTodoVO.setApplyDeptName(tDept.getDeptName());
+                }
+            }
+            approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
+            approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
+            approvalTodoVO.setApplicationId(approvalApplication.getId());
+
+            switch (approvalTodoVO.getApprovalCategory()){
+                case 5:
+                    OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationPurchase!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
+                    }
+                    break;
+                case 6:
+                    OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationStorage!=null){
+                        approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
+                    }
+                    break;
+                case 7:
+                    StringBuilder temp = new StringBuilder();
+                    List<OaApprovalApplicationAssetItem> oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetItems!=null){
+                        for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
+                            AssetMain assetMain = assetMainMap.get(oaApprovalApplicationAssetItem.getAssetMainId());
+                            if (assetMain!=null){
+                                temp.append(assetMain.getAssetName()).append(",");
+                            }
+                        }
+                        // 去除最后一位字符
+                        if (StringUtils.hasLength(temp.toString())){
+                            approvalTodoVO.setAssetName(temp.substring(0, temp.length() - 1));
+                        }else{
+                            approvalTodoVO.setAssetName("");
+                        }
+                    }
+                    break;
+                case 8:
+                    OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetOut!=null){
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
+                    }
+                    break;
+                case 9:
+                    OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetBack!=null){
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
+                    }
+                    break;
+                case 10:
+                    OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationDispose!=null){
+                        approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
+                    }
+                    break;
+                case 11:
+                    OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationChange!=null){
+                        Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
+                        TDept tDept = deptMap.get(ownershipDeptId);
+                        if (tDept!=null){
+                            approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
+                        }
+                    }
+                    break;
+                case 12:
+                    OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationReimbursement!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
+                    }
+                    break;
+                case 13:
+                    OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationMoney!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
+                        approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
+
+                    }
+                    break;
+                case 15:
+                    OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationPayment!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
+                        approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
+
+                    }
+                    break;
+                case 17:
+                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAdvertisement!=null){
+                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
+                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
+                    }
+                    break;
+            }
+
+            resList.add(approvalTodoVO);
+        }
+        res.setRecords(resList);
+        return R.ok(res);
+    }
+    @ApiOperation("我发起的")
+    @PostMapping("/pageListApply")
+    public R<PageInfo<ApprovalTodoVO>> pageListApply(@RequestBody ApprovalTodoListQuery query) {
+        List<ApprovalTodoVO> resList = new ArrayList<>();
+        Long userId = tokenService.getLoginUser().getUserId();
+        query.setUserId(userId);
+        PageInfo<ApprovalTodoVO> res = new PageInfo<>(query.getPageNum(), query.getPageSize());
+
+        PageInfo<OaApprovalApplications> pageInfo = approvalApplicationsService.pageListAudit(query);
+        List<OaApprovalApplications> list = pageInfo.getRecords();
+        if (list.isEmpty()){
+            return R.ok(new PageInfo<>());
+        }
+        res.setTotal(pageInfo.getTotal());
+        List<Integer> applicationIds = list.stream().map(OaApprovalApplications::getId).collect(Collectors.toList());
+        Map<Integer, OaApprovalApplicationReimbursement> approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery()
+                .in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationMoney> oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery()
+                .in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationPayment> approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery()
+                .in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationStorage> applicationStorageMap = approvalApplicationStorageService.lambdaQuery()
+                .in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationAsset> approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery()
+                .in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationDispose> approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery()
+                .in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationChange> approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery()
+                .in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationPurchase> approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery()
+                .in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e));
+        Map<Integer, List<OaApprovalApplicationAssetItem>> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
+                .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
+        Map<Integer, OaApprovalApplicationAdvertisement> approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
+                .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
+        Map<Integer, OaApprovalApplicationAttendance> applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery()
+                .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list()
+                .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
+
+        Map<Integer, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
+        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();
+        for (OaApprovalApplications approvalApplication : approvalApplications) {
+            ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+            approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
+            switch (approvalTodoVO.getApprovalCategory()){
+                case 1:
+                case 2:
+                case 3:
+                case 4:
+                default:
+                    OaApprovalApplicationAttendance oaApprovalApplicationAttendance = applicationAttendanceMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAttendance!=null){
+                        approvalTodoVO.setStartTime(oaApprovalApplicationAttendance.getStartTime());
+                        approvalTodoVO.setEndTime(oaApprovalApplicationAttendance.getEndTime());
+                        approvalTodoVO.setDuration(oaApprovalApplicationAttendance.getDuration());
+                    }
+                    break;
+            }
+            SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
+            if (sysUser!=null){
+                approvalTodoVO.setApplyUserName(sysUser.getUserName());
+                TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
+                if (tDept!=null){
+                    approvalTodoVO.setApplyDeptName(tDept.getDeptName());
+                }
+            }
+            approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
+            approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
+            approvalTodoVO.setApplicationId(approvalApplication.getId());
+
+            switch (approvalTodoVO.getApprovalCategory()){
+                case 5:
+                    OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationPurchase!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
+                    }
+                    break;
+                case 6:
+                    OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationStorage!=null){
+                        approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
+                    }
+                    break;
+                case 7:
+                    StringBuilder temp = new StringBuilder();
+                    List<OaApprovalApplicationAssetItem> oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetItems!=null){
+                        for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
+                            AssetMain assetMain = assetMainMap.get(oaApprovalApplicationAssetItem.getAssetMainId());
+                            if (assetMain!=null){
+                                temp.append(assetMain.getAssetName()).append(",");
+                            }
+                        }
+                        // 去除最后一位字符
+                        if (StringUtils.hasLength(temp.toString())){
+                            approvalTodoVO.setAssetName(temp.substring(0, temp.length() - 1));
+                        }else{
+                            approvalTodoVO.setAssetName("");
+                        }
+                    }
+                    break;
+                case 8:
+                    OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetOut!=null){
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
+                    }
+                    break;
+                case 9:
+                    OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAssetBack!=null){
+                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
+                    }
+                    break;
+                case 10:
+                    OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationDispose!=null){
+                        approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
+                    }
+                    break;
+                case 11:
+                    OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationChange!=null){
+                        Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
+                        TDept tDept = deptMap.get(ownershipDeptId);
+                        if (tDept!=null){
+                            approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
+                        }
+                    }
+                    break;
+                case 12:
+                    OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationReimbursement!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
+                    }
+                    break;
+                case 13:
+                    OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationMoney!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
+                        approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
+
+                    }
+                    break;
+                case 15:
+                    OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationPayment!=null){
+                        approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
+                        approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
+
+                    }
+                    break;
+                case 17:
+                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
+                    if (oaApprovalApplicationAdvertisement!=null){
+                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
+                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
+                    }
+                    break;
+            }
+
+            resList.add(approvalTodoVO);
+        }
+        res.setRecords(resList);
+        return R.ok(res);
+    }
 
 
 
@@ -92,6 +533,7 @@
     @ApiOperation(value = "通用审批接口")
     @PostMapping(value = "/audit")
     public R addLeave(@RequestBody AuditDTO dto) {
+
         OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId());
         Integer currentFlowNodeId = approvalApplications.getCurrentFlowNodeId();
         Long userId = tokenService.getLoginUser().getUserId();
@@ -106,14 +548,14 @@
         approvalTodoService.updateById(approvalTodo);
 
         OaApproval approval = approvalService.getById(approvalApplications.getApprovalId());
-        if (dto.getApprovalStatus()==0){
+        if (dto.getApprovalStatus() == 0) {
             // 中断审批流程
             approvalApplications.setApprovalStatus(3);
             approvalApplicationsService.updateById(approvalApplications);
             // 删除除当前审批人该申请单的未处理的所有待办
             approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
                     .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
-                    .eq(OaApprovalTodo::getStatus,0));
+                    .eq(OaApprovalTodo::getStatus, 0));
         }
         OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(currentFlowNodeId);
         OaApprovalFlowAudit approvalFlowAudit = new OaApprovalFlowAudit();
@@ -128,21 +570,56 @@
         approvalFlowAudit.setReason(dto.getReason());
         approvalFlowAuditService.save(approvalFlowAudit);
         List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId())
-                .orderByDesc(OaApprovalFlowNode::getSortOrder).list();
-        if (dto.getApprovalStatus()==1){
-            for (OaApprovalFlowNode approvalFlowNode : approvalFlowNodes) {
-                // 判断当前是否处于最后一个节点
-                if(approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNode.getId())){
-                    // 审批通过 审批流程结束
-                    approvalApplications.setApprovalStatus(2);
-                    approvalApplicationsService.updateById(approvalApplications);
-                    if (approval.getApprovalCategory()==1)
-                    break;
+                .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
+        if (dto.getApprovalStatus() == 1) {
+            // 判断当前是否处于最后一个节点
+            if (approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(approvalFlowNodes.size() - 1).getId())) {
+                // 审批通过 审批流程结束
+                approvalApplications.setApprovalStatus(2);
+                approvalApplicationsService.updateById(approvalApplications);
+                if (approval.getApprovalCategory() == 10 || approval.getApprovalCategory() == 7
+                        || approval.getApprovalCategory() == 8 || approval.getApprovalCategory() == 9) {
+                    List<OaApprovalApplicationAssetItem> approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery()
+                            .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list();
+                    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 10:
+                            assetMains.forEach(assetMain -> {
+                                assetMain.setDisposed(1);
+                            });
+                            break;
+                        case 7:
+                            assetMains.forEach(assetMain -> {
+                                assetMain.setInUse(1);
+                            });
+                            break;
+                        default:
+                            assetMains.forEach(assetMain -> {
+                                assetMain.setBorrowed(1);
+                            });
+                            break;
+                    }
+                    assetMainService.updateBatchById(assetMains);
+                }
+                //如果为资产入库审批,处理审批通过逻辑,创建该审批的资产信息
+                if (approval.getApprovalCategory().equals(ApprovalTypeEnum.IN_STOCK.getCode())) {
+                    assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId());
+                }
+            } else {
+                // 生成下一个节点的待办事项
+                for (int i = 0; i < approvalFlowNodes.size(); i++) {
+                    if (approvalApplications.getCurrentFlowNodeId()
+                            .equals(approvalFlowNodes.get(i).getId())) {
+                        approvalApplications.setCurrentFlowNodeId(approvalFlowNodes.get(i + 1).getId());
+                        OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodeService.getById(approvalFlowNodes.get(i + 1).getId());
+                        approvalTodoService.createApprovalTodos(approvalApplications.getId(),
+                                approvalApplications.getApplicationCode(), oaApprovalFlowNode1, approvalApplications.getDeptId());
+                    }
                 }
             }
         }
-
         return R.ok();
+
     }
 }
-

--
Gitblit v1.7.1