无关风月
2 天以前 60afc1c228318d136a273cd0b389217f87583277
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -11,47 +11,11 @@
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.model.*;
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.*;
import com.ruoyi.system.service.OaApprovalApplicationsService;
import com.ruoyi.system.service.OaApprovalFlowAuditService;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
@@ -145,6 +109,9 @@
    @Resource
    private AssetMainService assetMainService;
    @Resource
    private AssetInventoryRecordService assetInventoryRecordService;
    @Resource
    private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService;
    @Resource
    private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
@@ -229,6 +196,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:
@@ -260,17 +229,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) {
@@ -290,24 +267,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){
@@ -318,12 +303,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());
@@ -332,6 +319,8 @@
                case 15:
                    OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationPayment!=null){
                        // todo 当前阶段没有项目id 后续完善
                        approvalTodoVO.setProjectName("项目名称");
                        approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
                        approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
@@ -340,6 +329,7 @@
                case 17:
                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAdvertisement!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                    }
@@ -407,6 +397,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:
@@ -438,17 +430,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) {
@@ -468,24 +468,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){
@@ -496,12 +504,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());
@@ -510,6 +520,8 @@
                case 15:
                    OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationPayment!=null){
                        // todo 当前阶段没有项目id 后续完善
                        approvalTodoVO.setProjectName("项目名称");
                        approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
                        approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
@@ -518,6 +530,7 @@
                case 17:
                    OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
                    if (oaApprovalApplicationAdvertisement!=null){
                        approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle());
                        approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
                        approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
                    }
@@ -589,20 +602,49 @@
                    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);
@@ -611,6 +653,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("不为最后一个审批节点");
                // 生成下一个节点的待办事项
@@ -629,6 +679,19 @@
            }
        }
        return R.ok();
    }
    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));
        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);
    }
}