| | |
| | | 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; |
| | |
| | | @Resource |
| | | private AssetMainService assetMainService; |
| | | @Resource |
| | | |
| | | private AssetInventoryRecordService assetInventoryRecordService; |
| | | @Resource |
| | | private OaApprovalApplicationStorageAssetService oaApprovalApplicationStorageAssetService; |
| | | @Resource |
| | | private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService; |
| | |
| | | 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: |
| | |
| | | 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) { |
| | |
| | | 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()); |
| | | // 归还资产条数 |
| | | List<OaApprovalApplicationAssetItem> back = approvalApplicationAssetItemMap.get(approvalApplication.getId()); |
| | | // 借用资产条数 |
| | | List<OaApprovalApplicationAssetItem> grab = approvalApplicationAssetItemMap.get(oaApprovalApplicationAssetBack.getBorrowApplicationId()); |
| | | if (back.size()==grab.size()){ |
| | | // approvalTodoVO.setReturnStatus(2); |
| | | } |
| | | 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){ |
| | |
| | | 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()); |
| | | |
| | |
| | | case 15: |
| | | OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId()); |
| | | if (oaApprovalApplicationPayment!=null){ |
| | | // todo 当前阶段没有项目id 后续完善 |
| | | approvalTodoVO.setProjectName("项目名称"); |
| | | approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount()); |
| | | approvalTodoVO.setDescription(approvalApplication.getApplicationReason()); |
| | | |
| | |
| | | case 17: |
| | | OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId()); |
| | | if (oaApprovalApplicationAdvertisement!=null){ |
| | | approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle()); |
| | | approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent()); |
| | | approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount()); |
| | | } |
| | |
| | | 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: |
| | |
| | | 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) { |
| | |
| | | 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){ |
| | |
| | | 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()); |
| | | |
| | |
| | | case 15: |
| | | OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId()); |
| | | if (oaApprovalApplicationPayment!=null){ |
| | | // todo 当前阶段没有项目id 后续完善 |
| | | approvalTodoVO.setProjectName("项目名称"); |
| | | approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount()); |
| | | approvalTodoVO.setDescription(approvalApplication.getApplicationReason()); |
| | | |
| | |
| | | case 17: |
| | | OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId()); |
| | | if (oaApprovalApplicationAdvertisement!=null){ |
| | | approvalTodoVO.setTitle(oaApprovalApplicationAdvertisement.getTitle()); |
| | | approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent()); |
| | | approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount()); |
| | | } |
| | |
| | | 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("不为最后一个审批节点"); |
| | | // 生成下一个节点的待办事项 |
| | |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | } |