mitao
2 天以前 f769d817f8ba2522147c73fa93ccacdc3aab0cb6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -169,10 +169,20 @@
        Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
        Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
        Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
        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.setApprovalStatus(approvalApplication.getApprovalStatus());
            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()){
@@ -253,7 +263,7 @@
                    if (oaApprovalApplicationAssetBack!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getOperateTime());
                    }
                    break;
                case 10:
@@ -370,9 +380,11 @@
        Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
        Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
        Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
        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());
@@ -454,7 +466,7 @@
                    if (oaApprovalApplicationAssetBack!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAssetBack.getTitle());
                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
                        approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getOperateTime());
                    }
                    break;
                case 10:
@@ -544,6 +556,7 @@
        if (dto.getApprovalStatus() == 0) {
            // 中断审批流程
            approvalApplications.setApprovalStatus(3);
            approvalApplications.setReason(dto.getReason());
            approvalApplicationsService.updateById(approvalApplications);
            // 删除除当前审批人该申请单的未处理的所有待办
            approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
@@ -566,6 +579,11 @@
                .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())) {
                // 审批通过 审批流程结束
@@ -583,27 +601,72 @@
                            List<OaApprovalApplicationAssetItem> back = approvalApplicationAssetItemService.lambdaQuery()
                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId())
                                    .list();
                           // 借用资产条数
                            OaApprovalApplicationAsset borrowApplications = approvalApplicationAssetService.lambdaQuery()
                            OaApprovalApplicationAsset backAsset = approvalApplicationAssetService.lambdaQuery()
                                    .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
                                    .last("limit 1").one();
                            // 借用资产条数
                            List<OaApprovalApplicationAssetItem> borrow = approvalApplicationAssetItemService.lambdaQuery()
                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, borrowApplications.getId())
                                    .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, backAsset.getBorrowApplicationId())
                                    .list();
                            List<AssetMain> list = assetMainService.lambdaQuery().in(AssetMain::getId, back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
                                            .collect(Collectors.toList()))
                                    .list();
                            List<AssetMain> listBorrow = assetMainService.lambdaQuery().in(AssetMain::getId, borrow.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
                                            .collect(Collectors.toList()))
                                    .list();
                            OaApprovalApplicationAsset borrowApplicationAsset = approvalApplicationAssetService.lambdaQuery()
                                    .eq(OaApprovalApplicationAsset::getApprovalApplicationId, backAsset.getBorrowApplicationId())
                                    .last("limit 1").one();
                            if (back.size()==borrow.size()){
                                borrowApplications.setReturnStatus(2);
                                for (AssetMain assetMain : list) {
                                    assetMain.setBorrowed(0);
                                    assetMain.setAssetStatus("闲置");
                                }
                                backAsset.setReturnStatus(2);
                                borrowApplicationAsset.setReturnStatus(2);
                            }else if (!back.isEmpty()){
                                borrowApplications.setReturnStatus(1);
                                for (AssetMain assetMain : list) {
                                    assetMain.setBorrowed(1);
                                }
                                backAsset.setReturnStatus(1);
                                borrowApplicationAsset.setReturnStatus(1);
                            }else{
                                borrowApplications.setReturnStatus(0);
                                for (AssetMain assetMain : list) {
                                    assetMain.setBorrowed(1);
                                }
                                backAsset.setReturnStatus(0);
                                borrowApplicationAsset.setReturnStatus(0);
                            }
                            approvalApplicationAssetService.updateById(borrowApplications);
                            assetMainService.updateBatchById(list);
                            approvalApplicationAssetService.updateById(backAsset);
                            approvalApplicationAssetService.updateById(borrowApplicationAsset);
                            saveAssetRecord(0,ApprovalTypeEnum.RETURN.getDesc(),back.stream().map(OaApprovalApplicationAssetItem::getAssetMainId)
                                    .collect(Collectors.toList()));
                        case 10:
                            OaApprovalApplicationDispose approvalApplicationDispose = approvalApplicationDisposeService.lambdaQuery()
                                    .eq(OaApprovalApplicationDispose::getApprovalApplicationId, approvalApplications.getId())
                                    .last("limit 1").one();
                            assetMains.forEach(assetMain -> {
                                assetMain.setDisposed(1);
                                switch (approvalApplicationDispose.getDisposeType()){
                                    case 0:
                                        assetMain.setAssetStatus("报废");
                                        break;
                                    case 1:
                                        assetMain.setAssetStatus("报损");
                                        break;
                                    case 2:
                                        assetMain.setAssetStatus("捐赠");
                                        break;
                                }
                            });
                            saveAssetRecord(null,ApprovalTypeEnum.ASSET_DISPOSE.getDesc(),assetMains
                                    .stream().map(AssetMain::getId).collect(Collectors.toList()));
@@ -611,13 +674,17 @@
                        case 7:
                            assetMains.forEach(assetMain -> {
                                assetMain.setInUse(1);
                                assetMain.setAssetStatus("使用中");
                            });
                            saveAssetRecord(1,ApprovalTypeEnum.GRAB.getDesc(),assetMains
                                    .stream().map(AssetMain::getId).collect(Collectors.toList()));
                            break;
                        default:
                            assetMains.forEach(assetMain -> {
                                assetMain.setBorrowed(1);
                                assetMain.setAssetStatus("使用中");
                            });
                            saveAssetRecord(1,ApprovalTypeEnum.BORROW.getDesc(),assetMains
                                    .stream().map(AssetMain::getId).collect(Collectors.toList()));
@@ -659,7 +726,7 @@
    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));
        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);