2026-08-05 3ca1cefd9bed863131ee3f684ff127bd7ac877aa
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -129,7 +129,7 @@
    @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());
@@ -146,11 +146,7 @@
        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) {
@@ -202,8 +198,9 @@
            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());
            }
        });
@@ -250,7 +247,7 @@
    @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);
@@ -459,9 +456,11 @@
        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;