From 9c76b7efccd70395231b032a193a89f7638b657e Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 22 十月 2025 17:41:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java | 579 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 561 insertions(+), 18 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..bd7634d 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,31 @@
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.emums.ApprovalTypeEnum;
import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.ApprovalTodoListQuery;
import com.ruoyi.system.service.*;
+
+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.ApprovalTodoVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,7 +35,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 +50,8 @@
*/
@RestController
@RequestMapping("/oa-approval-flow-audit")
-@Api(tags = "通用审批接口")
+@Api(tags = "我审批的-我发起的-通用审批接口")
+@Slf4j
public class OaApprovalFlowAuditController {
@Resource
private OaApprovalTodoService approvalTodoService;
@@ -43,6 +62,8 @@
@Resource
private OaApprovalApplicationPurchaseService approvalApplicationPurchaseService;
@Resource
+ private OaApprovalApplicationPurchaseItemService approvalApplicationPurchaseItemService;
+ @Resource
private OaApprovalApplicationAssetItemService approvalApplicationAssetItemService;
@Resource
private TokenService tokenService;
@@ -52,7 +73,7 @@
@Resource
private OaApprovalApplicationsService approvalApplicationsService;
@Resource
- private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService;
+ private OaApprovalApplicationAdService approvalApplicationAdvertisementService;
@Resource
private OaApprovalApplicationContactService approvalApplicationContactService;
@Resource
@@ -63,6 +84,11 @@
private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
@Resource
private AssetMainService assetMainService;
+ @Resource
+
+ private AssetInventoryRecordService assetInventoryRecordService;
+ @Resource
+ private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
@Resource
private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
@Resource
@@ -82,16 +108,437 @@
@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, OaApprovalApplicationAd> approvalApplicationAdMap = approvalApplicationAdvertisementService.lambdaQuery()
+ .in(OaApprovalApplicationAd::getApprovalApplicationId, applicationIds).list()
+ .stream().collect(Collectors.toMap(OaApprovalApplicationAd::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)
+ .orderByDesc(OaApprovalApplications::getCreateTime).list();
+ Map<Integer, OaApprovalFlowAudit> auditMap = approvalFlowAuditService.lambdaQuery().in(OaApprovalFlowAudit::getApprovalApplicationId, applicationIds)
+ .eq(OaApprovalFlowAudit::getUserId, userId)
+ .list().stream().collect(Collectors.toMap(OaApprovalFlowAudit::getApprovalApplicationId, e -> e));
+ for (OaApprovalApplications approvalApplication : approvalApplications) {
+ ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+ approvalTodoVO.setReason(approvalApplication.getReason());
+ OaApprovalFlowAudit approvalFlowAudit = auditMap.get(approvalApplication.getId());
+ if(approvalFlowAudit.getApprovalStatus()!=null){
+ approvalTodoVO.setApprovalStatus(approvalFlowAudit.getApprovalStatus()?2:3);
+ }else{
+ approvalTodoVO.setApprovalStatus(1);
+ }
+ approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
+ approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
+ switch (approvalTodoVO.getApprovalCategory()){
+ 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.getNickName());
+ 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.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) {
+ 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.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){
+ approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
+ }
+ }
+ break;
+ 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());
+
+ }
+ break;
+ case 15:
+ OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
+ if (oaApprovalApplicationPayment!=null){
+ // todo 当前阶段没有项目id 后续完善
+ approvalTodoVO.setProjectName("项目名称");
+ approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
+ approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
+
+ }
+ break;
+ case 17:
+ OaApprovalApplicationAd oaApprovalApplicationAd = approvalApplicationAdMap.get(approvalApplication.getId());
+ if (oaApprovalApplicationAd !=null){
+ approvalTodoVO.setTitle(oaApprovalApplicationAd.getTitle());
+ approvalTodoVO.setContent(oaApprovalApplicationAd.getContent());
+ approvalTodoVO.setAmount(oaApprovalApplicationAd.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, OaApprovalApplicationAd> approvalApplicationAdMap = approvalApplicationAdvertisementService.lambdaQuery()
+ .in(OaApprovalApplicationAd::getApprovalApplicationId, applicationIds).list()
+ .stream().collect(Collectors.toMap(OaApprovalApplicationAd::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()
+ .orderByDesc(OaApprovalApplications::getCreateTime).in(OaApprovalApplications::getId, applicationIds).list();
+ for (OaApprovalApplications approvalApplication : approvalApplications) {
+ ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
+ approvalTodoVO.setReason(approvalApplication.getReason());
+ approvalTodoVO.setApprovalStatus(approvalApplication.getApprovalStatus());
+ approvalTodoVO.setApplicationReason(approvalApplication.getApplicationReason());
+ approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
+ 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.getNickName());
+ 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.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) {
+ 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.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){
+ approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
+ }
+ }
+ break;
+ 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());
+
+ }
+ break;
+ case 15:
+ OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
+ if (oaApprovalApplicationPayment!=null){
+ // todo 当前阶段没有项目id 后续完善
+ approvalTodoVO.setProjectName("项目名称");
+ approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
+ approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
+
+ }
+ break;
+ case 17:
+ OaApprovalApplicationAd oaApprovalApplicationAd = approvalApplicationAdMap.get(approvalApplication.getId());
+ if (oaApprovalApplicationAd !=null){
+ approvalTodoVO.setTitle(oaApprovalApplicationAd.getTitle());
+ approvalTodoVO.setContent(oaApprovalApplicationAd.getContent());
+ approvalTodoVO.setAmount(oaApprovalApplicationAd.getTotalAmount());
+ }
+ break;
+ }
+
+ resList.add(approvalTodoVO);
+ }
+ res.setRecords(resList);
+ return R.ok(res);
+ }
@Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT)
@ApiOperation(value = "通用审批接口")
@PostMapping(value = "/audit")
+ @Transactional
public R addLeave(@RequestBody AuditDTO dto) {
+
OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId());
Integer currentFlowNodeId = approvalApplications.getCurrentFlowNodeId();
Long userId = tokenService.getLoginUser().getUserId();
@@ -106,14 +553,15 @@
approvalTodoService.updateById(approvalTodo);
OaApproval approval = approvalService.getById(approvalApplications.getApprovalId());
- if (dto.getApprovalStatus()==0){
+ if (dto.getApprovalStatus() == 0) {
// 中断审批流程
approvalApplications.setApprovalStatus(3);
+ approvalApplications.setReason(dto.getReason());
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 +576,116 @@
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;
+ .eq(OaApprovalFlowNode::getStatus,1)
+ .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
+ if (dto.getApprovalStatus() == 1) {
+ // 删除同节点待办事项
+ approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
+ .ne(OaApprovalTodo::getUserId,userId)
+ .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
+ .eq(OaApprovalTodo::getFlowNodeId, currentFlowNodeId));
+ // 判断当前是否处于最后一个节点
+ if (approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(approvalFlowNodes.size() - 1).getId())) {
+ // 审批通过 审批流程结束
+ 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 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);
+ }
+ //如果为资产入库审批,处理审批通过逻辑,创建该审批的资产信息
+ 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())) {
+ log.info("匹配到审批流程,进入下一节点,当前节点id:{}", approvalFlowNodes.get(i));
+ // 申请单审批流程修改为下一节点
+ approvalApplications.setCurrentFlowNodeId(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.lambdaQuery().isNotNull(AssetMain::getWarehouseId).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