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());
@@ -198,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());
            }
        });
@@ -246,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);
@@ -455,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;