mitao
2 天以前 2b82b1e1d31671b8581d2e463ad762bdf63dad30
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -11,47 +11,10 @@
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.model.*;
import com.ruoyi.system.query.ApprovalTodoListQuery;
import com.ruoyi.system.service.AssetMainService;
import com.ruoyi.system.service.AssetTypeService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService;
import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
import com.ruoyi.system.service.OaApprovalApplicationAssetService;
import com.ruoyi.system.service.OaApprovalApplicationAttendanceService;
import com.ruoyi.system.service.OaApprovalApplicationChangeService;
import com.ruoyi.system.service.OaApprovalApplicationContactService;
import com.ruoyi.system.service.OaApprovalApplicationContractService;
import com.ruoyi.system.service.OaApprovalApplicationDisposeService;
import com.ruoyi.system.service.OaApprovalApplicationMoneyService;
import com.ruoyi.system.service.OaApprovalApplicationPaymentService;
import com.ruoyi.system.service.OaApprovalApplicationPurchaseItemService;
import com.ruoyi.system.service.OaApprovalApplicationPurchaseService;
import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService;
import com.ruoyi.system.service.OaApprovalApplicationReimbursementService;
import com.ruoyi.system.service.OaApprovalApplicationStorageAssetService;
import com.ruoyi.system.service.OaApprovalApplicationStorageService;
import com.ruoyi.system.service.*;
import com.ruoyi.system.service.OaApprovalApplicationsService;
import com.ruoyi.system.service.OaApprovalFlowAuditService;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
@@ -59,35 +22,12 @@
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 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;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -133,7 +73,7 @@
    @Resource
    private OaApprovalApplicationsService approvalApplicationsService;
    @Resource
    private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService;
    private OaApprovalApplicationAdService approvalApplicationAdvertisementService;
    @Resource
    private OaApprovalApplicationContactService approvalApplicationContactService;
    @Resource
@@ -144,6 +84,9 @@
    private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
    @Resource
    private AssetMainService assetMainService;
    @Resource
    private AssetInventoryRecordService assetInventoryRecordService;
    @Resource
    private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
    @Resource
@@ -215,9 +158,9 @@
        Map<Integer, List<OaApprovalApplicationAssetItem>> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
                .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
        Map<Integer, OaApprovalApplicationAdvertisement> approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
                .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
        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));
@@ -229,6 +172,7 @@
        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().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());
@@ -360,11 +304,11 @@
                    }
                    break;
                case 17:
                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAdvertisement!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                    OaApprovalApplicationAd oaApprovalApplicationAd = approvalApplicationAdMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAd !=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAd.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAd.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAd.getTotalAmount());
                    }
                    break;
            }
@@ -416,9 +360,9 @@
        Map<Integer, List<OaApprovalApplicationAssetItem>> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
                .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
        Map<Integer, OaApprovalApplicationAdvertisement> approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
                .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
        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));
@@ -430,6 +374,7 @@
        List<OaApprovalApplications> approvalApplications = approvalApplicationsService.lambdaQuery().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());
@@ -561,11 +506,11 @@
                    }
                    break;
                case 17:
                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAdvertisement!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                    OaApprovalApplicationAd oaApprovalApplicationAd = approvalApplicationAdMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAd !=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAd.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAd.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAd.getTotalAmount());
                    }
                    break;
            }
@@ -601,6 +546,7 @@
        if (dto.getApprovalStatus() == 0) {
            // 中断审批流程
            approvalApplications.setApprovalStatus(3);
            approvalApplications.setReason(dto.getReason());
            approvalApplicationsService.updateById(approvalApplications);
            // 删除除当前审批人该申请单的未处理的所有待办
            approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
@@ -655,20 +601,29 @@
                                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);
@@ -677,6 +632,14 @@
                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("不为最后一个审批节点");
                // 生成下一个节点的待办事项
@@ -695,6 +658,19 @@
            }
        }
        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);
    }
}