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) {