| | |
| | | @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()); |
| | |
| | | updatePurchaseRequestItemList(updateReqVO.getId(), requestItems); |
| | | |
| | | // 6. 更新附件 |
| | | if (updateReqVO.getBlobIds() != null) { |
| | | storageAttachmentApi.deleteAttachmentsByRecord("erp_purchase_request", updateReqVO.getId()); |
| | | storageAttachmentApi.bindAttachments("file", "erp_purchase_request", |
| | | updateReqVO.getId(), updateReqVO.getBlobIds()); |
| | | } |
| | | 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()); |
| | | } |
| | | }); |
| | |
| | | @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); |
| | |
| | | if (ErpPurchaseRequestStatusEnum.APPROVE.getStatus().equals(newStatus) |
| | | && purchaseRequest.getSupplierId() != null |
| | | && purchaseRequest.getOrderId() == null) { |
| | | try { |
| | | Long orderId = doGeneratePurchaseOrder(purchaseRequest); |
| | | log.info("[updatePurchaseRequestAuditStatus] 采购申请({}) 自动生成采购订单({})", id, orderId); |
| | | } catch (Exception e) { |
| | | log.error("[updatePurchaseRequestAuditStatus] 采购申请({}) 自动生成采购订单失败", id, e); |
| | | // 不抛出异常,避免影响状态更新 |
| | | } |
| | | Long orderId = doGeneratePurchaseOrder(purchaseRequest); |
| | | log.info("[updatePurchaseRequestAuditStatus] 采购申请({}) 自动生成采购订单({})", id, orderId); |
| | | } |
| | | } |
| | | |
| | |
| | | if (CollUtil.isEmpty(requestItems)) { |
| | | throw exception(PURCHASE_REQUEST_NOT_EXISTS); |
| | | } |
| | | requestItems.forEach(item -> { |
| | | if (item.getProductPrice() == null || item.getTotalPrice() == null || item.getTaxPrice() == null) { |
| | | throw exception(PURCHASE_REQUEST_ITEM_PRICE_EMPTY, item.getId()); |
| | | } |
| | | }); |
| | | |
| | | // 2. 生成采购订单号 |
| | | String orderNo = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX); |
| | |
| | | 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; |