From 60afc1c228318d136a273cd0b389217f87583277 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 11 十月 2025 11:29:33 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java | 162 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 117 insertions(+), 45 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..192d1eb 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 @@ -11,47 +11,11 @@ import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.AuditDTO; 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.model.*; 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.*; + import com.ruoyi.system.service.OaApprovalApplicationsService; import com.ruoyi.system.service.OaApprovalFlowAuditService; import com.ruoyi.system.service.OaApprovalFlowNodeService; @@ -84,6 +48,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 +74,8 @@ */ @RestController @RequestMapping("/oa-approval-flow-audit") -@Api(tags = "我审批的/我发起的/通用审批接口") +@Api(tags = "我审批的-我发起的-通用审批接口") +@Slf4j public class OaApprovalFlowAuditController { @Resource private OaApprovalTodoService approvalTodoService; @@ -141,6 +108,9 @@ private OaApprovalApplicationMoneyService approvalApplicationMoneyService; @Resource private AssetMainService assetMainService; + @Resource + + private AssetInventoryRecordService assetInventoryRecordService; @Resource private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService; @Resource @@ -226,6 +196,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 +215,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 +229,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 +267,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 +303,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 +319,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 +329,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 +397,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 +416,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 +430,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 +468,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 +504,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 +520,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 +530,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 +548,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 +587,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,20 +602,49 @@ 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); + saveAssetRecord(0,ApprovalTypeEnum.RETURN.getDesc(),back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId) + .collect(Collectors.toList())); + case 10: assetMains.forEach(assetMain -> { assetMain.setDisposed(1); }); + saveAssetRecord(null,ApprovalTypeEnum.ASSET_DISPOSE.getDesc(),assetMains + .stream().map(AssetMain::getId).collect(Collectors.toList())); break; case 7: assetMains.forEach(assetMain -> { assetMain.setInUse(1); }); + saveAssetRecord(1,ApprovalTypeEnum.GRAB.getDesc(),assetMains + .stream().map(AssetMain::getId).collect(Collectors.toList())); break; default: assetMains.forEach(assetMain -> { assetMain.setBorrowed(1); }); + saveAssetRecord(1,ApprovalTypeEnum.BORROW.getDesc(),assetMains + .stream().map(AssetMain::getId).collect(Collectors.toList())); break; } assetMainService.updateBatchById(assetMains); @@ -606,20 +653,45 @@ if (approval.getApprovalCategory().equals(ApprovalTypeEnum.IN_STOCK.getCode())) { assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId()); } + // 资产变更 + if (approval.getApprovalCategory().equals(ApprovalTypeEnum.ASSET_CHANGE.getCode())) { + List<OaApprovalApplicationAssetItem> approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery() + .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list(); + List<Integer> AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList()); + saveAssetRecord(1,ApprovalTypeEnum.ASSET_CHANGE.getDesc(),AssetMainIds); + } + } 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; } } } } return R.ok(); + } + 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)); + for (Integer assetMainId : assetMainIds) { + AssetInventoryRecord assetInventoryRecord = new AssetInventoryRecord(); + assetInventoryRecord.setAssetMainId(assetMainId); + assetInventoryRecord.setWarehouseId(warehouseMap.get(assetMainId)); + assetInventoryRecord.setType(type); + assetInventoryRecord.setRemarks(approvalType); + res.add(assetInventoryRecord); + } + assetInventoryRecordService.saveBatch(res); } } -- Gitblit v1.7.1