From 27ba205534c711e3674efd669f4fa88a035a10e1 Mon Sep 17 00:00:00 2001
From: quxin <592870522@qq.com>
Date: 星期四, 03 九月 2026 13:57:05 +0800
Subject: [PATCH] 添加逻辑: 采购管理--采购申请 审批不通过的订单可以通过修改订单详情后再次提交申请

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java                               |    1 +
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java             |    7 +++++++
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java         |   16 ++++++++++++++++
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java |    8 ++++++++
 4 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
index 8851644..2d41a03 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/ErpPurchaseRequestController.java
+++ b/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')")
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
index 96a6482..d7fb9d3 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/enums/ErrorCodeConstants.java
+++ b/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, "閲囪喘鐢宠瀹℃壒鍒嗙被涓嶅瓨鍦紝璇峰厛鍦˙PM妯″潡鍒涘缓閲囪喘鐢宠瀹℃壒娴佺▼鍒嗙被");
     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, "鏉ョエ涓嶅瓨鍦�");
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
index a761923..f06dc72 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestService.java
+++ b/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 缂栧彿鍒楄〃
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
index 7f2debd..681e96a 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
+++ b/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) {

--
Gitblit v1.9.3