添加逻辑:
采购管理--采购申请
审批不通过的订单可以通过修改订单详情后再次提交申请
已修改4个文件
32 ■■■■■ 文件已修改
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
@@ -143,6 +143,14 @@
        return success(true);
    }
    @PutMapping("/reset-status")
    @Operation(summary = "重置采购申请状态(驳回→草稿)")
    @PreAuthorize("@ss.hasPermission('erp:purchase-request:update')")
    public CommonResult<Boolean> resetPurchaseRequestStatus(@RequestParam("id") Long id) {
        purchaseRequestService.resetPurchaseRequestStatus(id);
        return success(true);
    }
    @GetMapping("/approve-process-list")
    @Operation(summary = "获取采购申请审批流程列表")
    @PreAuthorize("@ss.hasPermission('erp:purchase-request:query')")
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
@@ -53,6 +53,7 @@
    ErrorCode PURCHASE_REQUEST_ORDER_EXISTS = new ErrorCode(1_030_104_007, "采购申请单已生成采购订单,请勿重复操作");
    ErrorCode PURCHASE_REQUEST_BPM_CATEGORY_NOT_EXISTS = new ErrorCode(1_030_104_008, "采购申请审批分类不存在,请先在BPM模块创建采购申请审批流程分类");
    ErrorCode PURCHASE_REQUEST_BPM_PROCESS_DEFINITION_NOT_EXISTS = new ErrorCode(1_030_104_009, "采购申请审批分类下没有可用的流程模型,请先创建并发布流程");
    ErrorCode PURCHASE_REQUEST_RESET_FAIL_NOT_REJECT = new ErrorCode(1_030_104_010, "重置失败,只有驳回状态的采购申请单才能重置");
    // ========== ERP 采购来票(1-030-105-000) ==========
    ErrorCode PURCHASE_INVOICE_NOT_EXISTS = new ErrorCode(1_030_105_000, "来票不存在");
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
@@ -104,6 +104,13 @@
    Long generatePurchaseOrder(Long id, Long supplierId);
    /**
     * 重置采购申请状态(驳回 → 草稿)
     *
     * @param id 编号
     */
    void resetPurchaseRequestStatus(Long id);
    /**
     * 根据编号列表获取采购申请列表
     *
     * @param ids 编号列表
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -448,6 +448,22 @@
        return null;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void resetPurchaseRequestStatus(Long id) {
        ErpPurchaseRequestDO purchaseRequest = validatePurchaseRequestExists(id);
        Integer status = purchaseRequest.getStatus();
        // 兼容数据不一致:BPM 已驳回但业务表 status 未更新(仍为审批中)
        if (!ErpPurchaseRequestStatusEnum.REJECT.getStatus().equals(status)
                && !ErpPurchaseRequestStatusEnum.PROCESS.getStatus().equals(status)) {
            throw exception(PURCHASE_REQUEST_RESET_FAIL_NOT_REJECT);
        }
        purchaseRequestMapper.updateById(new ErpPurchaseRequestDO()
                .setId(id)
                .setStatus(ErpPurchaseRequestStatusEnum.DRAFT.getStatus())
                .setProcessInstanceId(""));
    }
    private ErpPurchaseRequestDO validatePurchaseRequestExists(Long id) {
        ErpPurchaseRequestDO purchaseRequest = purchaseRequestMapper.selectById(id);
        if (purchaseRequest == null) {