From e347fd6e8b523b75e7eb28627ba3597cf9e40f6a Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 16 九月 2026 14:26:40 +0800
Subject: [PATCH] refactor(approval): 采购计划/采购订单审批由 BPM 改为轻量级状态机

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java
index 954d1d4..4241ac6 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchasePlanService.java
@@ -2,13 +2,14 @@
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.plan.ErpPurchasePlanPageReqVO;
+import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.plan.ErpPurchasePlanRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.plan.ErpPurchasePlanSaveReqVO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchasePlanDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchasePlanItemDO;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
+import java.util.Set;
 
 /**
  * ERP 閲囪喘璁″垝 Service 鎺ュ彛
@@ -72,23 +73,40 @@
     PageResult<ErpPurchasePlanDO> getPurchasePlanPage(ErpPurchasePlanPageReqVO pageReqVO);
 
     /**
-     * 鎻愪氦閲囪喘璁″垝瀹℃壒
+     * 鎻愪氦閲囪喘璁″垝瀹℃牳
      *
-     * @param id                   缂栧彿
-     * @param processDefinitionKey BPM 娴佺▼瀹氫箟 Key
-     * @param userId               鐢ㄦ埛缂栧彿
+     * 鎻愪氦鍓嶆牎楠岄�氱敤瀹℃壒閰嶇疆锛坆izType = purchase_plan_approve锛夊凡鍚敤涓旈厤缃簡鏈夋晥瀹℃壒浜猴紱
+     * 鏍¢獙閫氳繃鍚庣姸鎬佺疆涓恒�屽鎵逛腑銆嶃�傝崏绋夸笌瀹℃牳涓嶉�氳繃鐘舵�佸潎鍙彁浜ゃ��
+     *
+     * @param id 缂栧彿
      */
-    void submitPurchasePlan(Long id, String processDefinitionKey, Long userId);
+    void submitPurchasePlan(Long id);
 
     /**
-     * 鑾峰彇閲囪喘璁″垝瀹℃壒娴佺▼鍒楄〃
+     * 鑾峰緱閲囪喘璁″垝鐨勫鎵逛汉鐢ㄦ埛缂栧彿闆嗗悎
      *
-     * @return 娴佺▼瀹氫箟鍒楄〃
+     * 渚涘墠绔垪琛ㄩ〉鍒ゆ柇鏄惁灞曠ず銆屽鏍搞�嶆寜閽紝鏈厤缃椂杩斿洖绌洪泦鍚堛��
+     *
+     * @return 瀹℃壒浜虹敤鎴风紪鍙烽泦鍚�
      */
-    List<Map<String, Object>> getPurchasePlanApproveProcessDefinitionList();
+    Set<Long> getPurchasePlanApproverUserIds();
+
+    /**
+     * 瀹℃牳閲囪喘璁″垝锛堝鎵逛腑 鈫� 瀹℃牳閫氳繃 / 瀹℃牳涓嶉�氳繃锛�
+     *
+     * 浠呴�氱敤瀹℃壒閰嶇疆涓寚瀹氱殑瀹℃壒浜烘湰浜哄彲璋冪敤锛涘鏍镐笉閫氳繃鏃堕』濉啓鍘熷洜銆�
+     * 瀹℃牳閫氳繃鍚庡皢鑷姩鐢熸垚閲囪喘鐢宠銆�
+     *
+     * @param id           閲囪喘璁″垝缂栧彿
+     * @param pass         鏄惁閫氳繃
+     * @param reviewRemark 瀹℃牳鎰忚锛堜笉閫氳繃鏃朵负蹇呭~鐨勫師鍥狅級
+     */
+    void auditPurchasePlan(Long id, Boolean pass, String reviewRemark);
 
     /**
      * BPM 瀹℃壒缁撴灉鍥炶皟鏇存柊閲囪喘璁″垝鐘舵��
+     *
+     * 鍘嗗彶鍏煎鎺ュ彛锛氭敼閫犱负杞婚噺绾у鎵瑰悗涓嶅啀鐢� BPM 浜嬩欢瑙﹀彂锛屼繚鐣欎互鍏煎鏃㈡湁鐩戝惉鍣ㄣ��
      *
      * @param id        閲囪喘璁″垝缂栧彿
      * @param bpmResult BPM 瀹℃壒缁撴灉
@@ -96,6 +114,16 @@
     void updatePurchasePlanAuditStatus(Long id, Integer bpmResult);
 
     /**
+     * 鑾峰彇搴撳瓨棰勮寤鸿閲囪喘鏄庣粏
+     *
+     * <p>閬嶅巻鍚敤瀹夊叏搴撳瓨鐨勭墿鏂欙紝鎸夐粯璁や粨搴撳綋鍓嶅簱瀛樹綆浜庢渶浣庡簱瀛樻椂锛�
+     * 琛ヨ冻鍒板畨鍏ㄥ簱瀛橈紙鏈厤缃垯鍥炶惤鏈�楂�/鏈�浣庡簱瀛橈級寰楀埌寤鸿閲囪喘鏄庣粏锛屼笉钀藉簱锛屼緵鏂板寮圭獥鍥炲~鏍稿銆�
+     *
+     * @return 寤鸿閲囪喘鏄庣粏鍒楄〃
+     */
+    List<ErpPurchasePlanRespVO.Item> getStockAlertSuggestItems();
+
+    /**
      * 鏍规嵁搴撳瓨棰勮鑷姩鐢熸垚閲囪喘璁″垝锛堣崏绋匡級
      *
      * <p>閬嶅巻鍚敤瀹夊叏搴撳瓨鐨勭墿鏂欙紝褰撳墠搴撳瓨浣庝簬瀹夊叏搴撳瓨涓嬮檺鏃讹紝

--
Gitblit v1.9.3