package com.ruoyi.web.controller.api; 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.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.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; import org.springframework.web.bind.annotation.RestController; 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; /** *

* 审批流程节点审核记录表 前端控制器 *

* * @author WuGuanFengYue * @since 2025-09-15 */ @RestController @RequestMapping("/oa-approval-flow-audit") @Api(tags = "我审批的/我发起的/通用审批接口") public class OaApprovalFlowAuditController { @Resource private OaApprovalTodoService approvalTodoService; @Resource private OaApprovalFlowAuditService approvalFlowAuditService; @Resource private OaApprovalApplicationStorageService approvalApplicationStorageService; @Resource private OaApprovalApplicationPurchaseService approvalApplicationPurchaseService; @Resource private OaApprovalApplicationPurchaseItemService approvalApplicationPurchaseItemService; @Resource private OaApprovalApplicationAssetItemService approvalApplicationAssetItemService; @Resource private TokenService tokenService; @Resource private OaApprovalService approvalService; @Resource private OaApprovalApplicationsService approvalApplicationsService; @Resource private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService; @Resource private OaApprovalApplicationContactService approvalApplicationContactService; @Resource private OaApprovalApplicationPaymentService approvalApplicationPaymentService; @Resource private OaApprovalApplicationContractService approvalApplicationContractService; @Resource private OaApprovalApplicationMoneyService approvalApplicationMoneyService; @Resource private AssetMainService assetMainService; @Resource private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService; @Resource private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService; @Resource private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService; @Resource private OaApprovalFlowNodeService approvalFlowNodeService; @Resource private OaApprovalApplicationAssetService approvalApplicationAssetService; @Resource private ISysUserService sysUserService; @Resource private OaApprovalApplicationDisposeService approvalApplicationDisposeService; @Resource private OaApprovalApplicationChangeService approvalApplicationChangeService; @Resource private OaApprovalApplicationAttendanceService approvalApplicationAttendanceService; @Resource private TDeptService deptService; @Resource private AssetTypeService assetTypeService; @Resource private OaApprovalTodoService oaApprovalTodoService; @Resource private OaApprovalFlowService approvalFlowService; @ApiOperation("我审批的") @PostMapping("/pageListAudit") public R> pageList(@RequestBody ApprovalTodoListQuery query) { List resList = new ArrayList<>(); Long userId = tokenService.getLoginUser().getUserId(); query.setUserId(userId); PageInfo res = new PageInfo<>(query.getPageNum(), query.getPageSize()); PageInfo pageInfo = approvalTodoService.pageListAudit(query); List list = pageInfo.getRecords(); if (list.isEmpty()){ return R.ok(new PageInfo<>()); } res.setTotal(pageInfo.getTotal()); List applicationIds = list.stream().map(OaApprovalTodo::getApplicationId).collect(Collectors.toList()); Map approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery() .in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e)); Map oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery() .in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e)); Map approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery() .in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e)); Map applicationStorageMap = approvalApplicationStorageService.lambdaQuery() .in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e)); Map approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery() .in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e)); Map approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery() .in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e)); Map approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery() .in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e)); Map approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery() .in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e)); Map> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery() .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId)); Map approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery() .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e)); Map applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery() .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e)); Map assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e)); Map userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e)); Map deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e)); Map approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e)); List 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 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> pageListApply(@RequestBody ApprovalTodoListQuery query) { List resList = new ArrayList<>(); Long userId = tokenService.getLoginUser().getUserId(); query.setUserId(userId); PageInfo res = new PageInfo<>(query.getPageNum(), query.getPageSize()); PageInfo pageInfo = approvalApplicationsService.pageListAudit(query); List list = pageInfo.getRecords(); if (list.isEmpty()){ return R.ok(new PageInfo<>()); } res.setTotal(pageInfo.getTotal()); List applicationIds = list.stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); Map approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery() .in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e)); Map oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery() .in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e)); Map approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery() .in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e)); Map applicationStorageMap = approvalApplicationStorageService.lambdaQuery() .in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e)); Map approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery() .in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e)); Map approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery() .in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e)); Map approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery() .in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e)); Map approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery() .in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e)); Map> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery() .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId)); Map approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery() .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e)); Map applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery() .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list() .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e)); Map assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e)); Map userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e)); Map deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e)); Map approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e)); List 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 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); } @Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT) @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(); SysUser sysUser = sysUserService.selectUserById(userId); OaApprovalTodo approvalTodo = approvalTodoService.lambdaQuery().eq(OaApprovalTodo::getUserId, userId) .eq(OaApprovalTodo::getFlowNodeId, currentFlowNodeId) .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId()) .last("limit 1").one(); approvalTodo.setStatus(1); approvalTodo.setHandleTime(LocalDateTime.now()); approvalTodoService.updateById(approvalTodo); OaApproval approval = approvalService.getById(approvalApplications.getApprovalId()); if (dto.getApprovalStatus() == 0) { // 中断审批流程 approvalApplications.setApprovalStatus(3); approvalApplicationsService.updateById(approvalApplications); // 删除除当前审批人该申请单的未处理的所有待办 approvalTodoService.remove(new LambdaQueryWrapper() .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId()) .eq(OaApprovalTodo::getStatus, 0)); } OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(currentFlowNodeId); OaApprovalFlowAudit approvalFlowAudit = new OaApprovalFlowAudit(); approvalFlowAudit.setApprovalApplicationId(approvalApplications.getId()); approvalFlowAudit.setFlowNodeId(approvalApplications.getCurrentFlowNodeId()); approvalFlowAudit.setFlowName(oaApprovalFlowNode.getFlowName()); approvalFlowAudit.setSortOrder(oaApprovalFlowNode.getSortOrder()); approvalFlowAudit.setUserId(userId.intValue()); approvalFlowAudit.setUserName(sysUser.getUserName()); approvalFlowAudit.setApprovalStatus(dto.getApprovalStatus() != 0); approvalFlowAudit.setApprovalTime(LocalDateTime.now()); approvalFlowAudit.setReason(dto.getReason()); approvalFlowAuditService.save(approvalFlowAudit); List approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId()) .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 approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery() .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list(); List AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList()); List 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(); } }