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