| | |
| | | import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; |
| | | import cn.iocoder.yudao.module.erp.enums.ErpPurchaseRequestStatusEnum; |
| | | import cn.iocoder.yudao.module.system.api.dept.DeptApi; |
| | | import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| | | import jakarta.annotation.Resource; |
| | |
| | | private AdminUserApi adminUserApi; |
| | | @Resource |
| | | private DeptApi deptApi; |
| | | @Resource |
| | | private StorageAttachmentApi storageAttachmentApi; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | calculateTotalPrice(purchaseRequest, requestItems); |
| | | purchaseRequestMapper.insert(purchaseRequest); |
| | | |
| | | // 6. 插入申请明细 |
| | | // 6. 绑定附件 |
| | | storageAttachmentApi.bindAttachments("file", "erp_purchase_request", |
| | | purchaseRequest.getId(), createReqVO.getBlobIds()); |
| | | |
| | | // 7. 插入申请明细 |
| | | requestItems.forEach(o -> o.setRequestId(purchaseRequest.getId())); |
| | | purchaseRequestItemMapper.insertBatch(requestItems); |
| | | |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updatePurchaseRequest(ErpPurchaseRequestSaveReqVO updateReqVO) { |
| | | // 1. 校验存在 + 草稿状态 |
| | | ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExistsAndDraft(updateReqVO.getId()); |
| | | ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestCanModify(updateReqVO.getId()); |
| | | // 2. 校验供应商(如果指定) |
| | | if (updateReqVO.getSupplierId() != null) { |
| | | supplierService.validateSupplier(updateReqVO.getSupplierId()); |
| | |
| | | |
| | | // 5. 更新申请明细 |
| | | updatePurchaseRequestItemList(updateReqVO.getId(), requestItems); |
| | | |
| | | // 6. 更新附件 |
| | | storageAttachmentApi.updateAttachments("file", "erp_purchase_request", updateReqVO.getId(), updateReqVO.getBlobIds()); |
| | | } |
| | | |
| | | private void calculateTotalPrice(ErpPurchaseRequestDO purchaseRequest, List<ErpPurchaseRequestItemDO> requestItems) { |
| | |
| | | return; |
| | | } |
| | | purchaseRequests.forEach(purchaseRequest -> { |
| | | // 只有草稿状态才能删除 |
| | | if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(purchaseRequest.getStatus())) { |
| | | Integer status = purchaseRequest.getStatus(); |
| | | if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(status) |
| | | && !ErpPurchaseRequestStatusEnum.REJECT.getStatus().equals(status)) { |
| | | throw exception(PURCHASE_REQUEST_DELETE_FAIL_NOT_DRAFT, purchaseRequest.getNo()); |
| | | } |
| | | }); |
| | | |
| | | purchaseRequests.forEach(purchaseRequest -> { |
| | | storageAttachmentApi.deleteAttachmentsByRecord("erp_purchase_request", purchaseRequest.getId()); |
| | | purchaseRequestMapper.deleteById(purchaseRequest.getId()); |
| | | purchaseRequestItemMapper.deleteByRequestId(purchaseRequest.getId()); |
| | | }); |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void submitPurchaseRequest(Long id, String processDefinitionKey, Long userId) { |
| | | // 1. 校验存在 + 草稿状态 |
| | | ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExistsAndDraft(id); |
| | | ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestCanModify(id); |
| | | |
| | | // 2. 校验是否有明细 |
| | | List<ErpPurchaseRequestItemDO> items = purchaseRequestItemMapper.selectListByRequestId(id); |
| | |
| | | return purchaseRequest; |
| | | } |
| | | |
| | | private ErpPurchaseRequestDO validatePurchaseRequestExistsAndDraft(Long id) { |
| | | private ErpPurchaseRequestDO validatePurchaseRequestCanModify(Long id) { |
| | | ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExists(id); |
| | | if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(purchaseRequest.getStatus())) { |
| | | Integer status = purchaseRequest.getStatus(); |
| | | if (!ErpPurchaseRequestStatusEnum.DRAFT.getStatus().equals(status) |
| | | && !ErpPurchaseRequestStatusEnum.REJECT.getStatus().equals(status)) { |
| | | throw exception(PURCHASE_REQUEST_UPDATE_FAIL_NOT_DRAFT, purchaseRequest.getNo()); |
| | | } |
| | | return purchaseRequest; |