From 8c3f0c9edd90caa76d1e615b5cae98f7e74f412f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 07 九月 2026 16:12:04 +0800
Subject: [PATCH] docs(sql): 添加BPM审核流程修复和部署脚本
---
docs/sql/bpm_audit_flow_02_deploy_proc.sql | 202 +++++++++++++++++++++++++++++++++
docs/sql/bpm_audit_flow_01_repair_and_category.sql | 110 ++++++++++++++++++
2 files changed, 312 insertions(+), 0 deletions(-)
diff --git a/docs/sql/bpm_audit_flow_01_repair_and_category.sql b/docs/sql/bpm_audit_flow_01_repair_and_category.sql
new file mode 100644
index 0000000..56c6503
--- /dev/null
+++ b/docs/sql/bpm_audit_flow_01_repair_and_category.sql
@@ -0,0 +1,110 @@
+-- =============================================================================
+-- 鏂囦欢锛歜pm_audit_flow_01_repair_and_category.sql
+-- 鐢ㄩ�旓細BPM 瀹℃牳娴佺▼銆屼慨澶� + 鍒嗙被琛ラ綈銆嶆锛堢 1 涓墽琛岋級
+-- 鐩爣搴擄細ruoyi-vue-pro锛堝悗绔� 48080 瀹為檯璇诲彇鐨勮繍琛屽簱锛�
+-- 瑕佹眰锛歁ySQL 8.0+锛涘缓璁厛澶囦唤锛歮ysqldump ruoyi-vue-pro act_re_procdef act_re_model
+-- act_re_deployment act_ge_bytearray bpm_category bpm_process_definition_info > bpm_bak.sql
+-- 鐗规�э細鏈枃浠跺唴鎵�鏈夎鍙ュ潎骞傜瓑锛堝彲閲嶅鎵ц锛夛紱鍒ゆ柇"宸插瓨鍦�/鏁版嵁涓嶅畬鏁�"鍚庡彧鍋氬繀瑕佷慨澶嶏紝
+-- 涓嶅垹闄や换浣曟棦鏈夋暟鎹紝鍙仛鐘舵�佷慨姝c��
+-- 璇存槑锛�
+-- 1) 淇娈靛彧鍋氬畨鍏ㄤ慨澶嶏紝涓嶈嚜鍔ㄥ垹闄�"娴嬭瘯/鍨冨溇娴佺▼"锛堟秹鍙婂巻鍙叉暟鎹垽鏂紝闇�浜哄伐锛夈��
+-- 瀵规槑鏄惧瀮鍦炬祦绋嬬粺涓�"鎸傝捣"锛岄伩鍏嶅嚭鐜板湪鍓嶇鍙戣捣鍒楄〃锛屼笖涓嶅奖鍝嶈繍琛屼腑鐨勬祦绋嬪疄渚嬨��
+-- 2) 鍒嗙被琛ラ綈锛氬彧涓轰唬鐮佷腑宸插紩鐢ㄣ�佷絾搴撻噷缂哄け鐨勫垎绫� code 琛ユ彃锛堝凡瀛樺湪鍒欒烦杩囷級銆�
+-- =============================================================================
+
+SET NAMES utf8mb4;
+
+-- -----------------------------------------------------------------------------
+-- 鈶� 鏁版嵁瀹屾暣鎬т慨澶�
+-- -----------------------------------------------------------------------------
+
+-- 1.1 ACT_RE_PROCDEF.ENGINE_VERSION_ 绌轰覆浼氬鑷� Flowable 鎻愪氦瀹℃壒鎶ラ敊
+-- 锛圛nvalid 'engine' for process definition ...锛夛紝闇�淇涓� NULL銆�
+UPDATE ACT_RE_PROCDEF
+ SET ENGINE_VERSION_ = NULL
+ WHERE ENGINE_VERSION_ = '';
+
+-- 1.2 ACT_RE_MODEL.META_INFO_ 涓虹┖浼氬鑷存祦绋嬫ā鍨嬪垪琛�/椤甸潰鍙嶅簭鍒楀寲寮傚父銆�
+-- 琛ラ綈涓�涓渶灏忕殑鍚堟硶 JSON锛坱ype=10 BPMN 妯″紡锛屽惈 sort锛夛紝淇濊瘉椤甸潰鍙墦寮�銆�
+-- 鍙ˉ绌哄�艰锛屼笉褰卞搷宸叉湁瀹屾暣閰嶇疆銆�
+UPDATE ACT_RE_MODEL
+ SET META_INFO_ = CONCAT('{"type":10,"sort":', UNIX_TIMESTAMP(NOW(3)) * 1000, ',"formType":10,"visible":true}')
+ WHERE META_INFO_ IS NULL OR META_INFO_ = '';
+
+-- 1.3 bpm_process_definition_info.model_type 闈� 10 鐨� BPMN 娴佺▼锛屽垱寤烘祦绋嬪疄渚嬩細 NPE銆�
+-- 浠呭綋璇ユ祦绋嬬‘涓� BPMN锛堝湪 ACT_RE_PROCDEF 瀛樺湪锛変笖闈� SIMPLE锛坰imple_model 涓虹┖锛夋椂淇涓� 10銆�
+UPDATE bpm_process_definition_info i
+ JOIN ACT_RE_PROCDEF p ON p.ID_ = i.process_definition_id
+ SET i.model_type = 10
+ WHERE i.simple_model IS NULL
+ AND i.model_type <> 10;
+
+-- 1.4 涓氬姟瑙勮寖娴佺▼鐨勫鐗堟湰娌荤悊锛氬悓 key 淇濈暀鏈�鏂扮増鏈縺娲伙紙SUSPENSION_STATE_=1锛夛紝
+-- 鍘嗗彶鐗堟湰涓�寰嬫寕璧凤紙=2锛夈�傚彧浣滅敤浜�"鍦ㄧ敤"鐧藉悕鍗� key锛屽叾浣欎笉鍔ㄣ��
+UPDATE ACT_RE_PROCDEF p
+ JOIN (SELECT KEY_, MAX(VERSION_) AS max_ver
+ FROM ACT_RE_PROCDEF
+ WHERE KEY_ IN ('erp-finance-payment-audit','crm-invoice-audit',
+ 'crm-receivable-audit','mes-pd-project-audit',
+ 'purchase_request_approve')
+ GROUP BY KEY_) t ON t.KEY_ = p.KEY_
+ SET p.SUSPENSION_STATE_ = IF(p.VERSION_ = t.max_ver, 1, 2);
+
+-- 1.5 鏄庢樉涓�"娴嬭瘯/宸插簾寮�"鐨勬祦绋嬬粺涓�鎸傝捣锛�=2锛夛紝閬垮厤鍑虹幇鍦ㄥ彂璧�/寰呭姙閫夋嫨鍒楄〃銆�
+-- 浠呮敼鐘舵�佷笉鍒犻櫎锛屽彲闅忔椂浜哄伐鍦ㄧ晫闈㈡垨 SQL 娓呯悊锛涘杩愯涓疄渚嬫棤褰卞搷銆�
+UPDATE ACT_RE_PROCDEF
+ SET SUSPENSION_STATE_ = 2
+ WHERE KEY_ IN ('Ada','QWEDD','SSQ','_..123abc','b000_abc.','yz001','yz002',
+ 'caigoushenpi','pus','purchase_approve','contract_approve');
+
+-- 1.6 锛堝彲閫夛級鏌ョ湅浠嶅浜庢縺娲荤姸鎬佺殑娴佺▼锛屼汉宸ョ‘璁ゆ槸鍚︽畫鐣欏瀮鍦炬祦绋嬶細
+-- SELECT KEY_, NAME_, VERSION_, SUSPENSION_STATE_ FROM ACT_RE_PROCDEF
+-- WHERE SUSPENSION_STATE_ = 1 ORDER BY KEY_;
+
+-- -----------------------------------------------------------------------------
+-- 鈶� 娴佺▼鍒嗙被锛坆pm_category锛夎ˉ榻�
+-- 瀵瑰簲鍚勪笟鍔″崟鎹彂璧峰鎵规椂鎸� code 鎷夊彇鍙彂璧锋祦绋嬪垪琛紱浠g爜涓凡寮曠敤浣嗗簱涓己澶卞垯琛ャ��
+-- 姣忔潯鍧囧仛"宸插瓨鍦ㄥ垯璺宠繃"鍒ゆ柇锛坈ode + 鏈垹闄わ級銆�
+-- -----------------------------------------------------------------------------
+
+-- 2.1 ERP 閲囪喘璁㈠崟瀹℃壒
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '閲囪喘璁㈠崟瀹℃壒', 'purchase_order_approve', 'ERP 閲囪喘璁㈠崟瀹℃壒', 0, 10, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'purchase_order_approve' AND deleted = 0);
+
+-- 2.2 ERP 閿�鍞鍗曞鎵�
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '閿�鍞鍗曞鎵�', 'sale_order_approve', 'ERP 閿�鍞鍗曞鎵�', 0, 20, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'sale_order_approve' AND deleted = 0);
+
+-- 2.3 HRM 璇峰亣瀹℃壒
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '璇峰亣瀹℃壒', 'hrm_leave_approve', 'HRM 璇峰亣鐢宠瀹℃壒', 0, 30, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'hrm_leave_approve' AND deleted = 0);
+
+-- 2.4 HRM 鍔犵彮瀹℃壒
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '鍔犵彮瀹℃壒', 'overtime_approve', 'HRM 鍔犵彮鐢宠瀹℃壒', 0, 40, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'overtime_approve' AND deleted = 0);
+
+-- 2.5 HRM 绂昏亴瀹℃壒
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '绂昏亴瀹℃壒', 'hrm_resignation_approve', 'HRM 绂昏亴鐢宠瀹℃壒', 0, 50, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'hrm_resignation_approve' AND deleted = 0);
+
+-- 2.6 HRM 璋冨姩瀹℃壒
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '璋冨姩瀹℃壒', 'hrm_transfer_approve', 'HRM 璋冨姩鐢宠瀹℃壒', 0, 60, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'hrm_transfer_approve' AND deleted = 0);
+
+-- 2.7 MES 鎶ュ伐/鐢熶骇宸ュ崟瀹℃壒锛堜唬鐮佷晶 MES 鎶ュ伐涓庡伐鍗曞叡鐢ㄥ垎绫� mes_pro_feedback_audit锛�
+INSERT INTO bpm_category (name, code, description, status, sort, creator, create_time, updater, update_time, deleted)
+SELECT '鎶ュ伐瀹℃壒', 'mes_pro_feedback_audit', 'MES 鐢熶骇鎶ュ伐/宸ュ崟瀹℃壒', 0, 70, '1', NOW(), '1', NOW(), 0
+ WHERE NOT EXISTS (SELECT 1 FROM bpm_category WHERE code = 'mes_pro_feedback_audit' AND deleted = 0);
+
+-- -----------------------------------------------------------------------------
+-- 鈶� 淇缁撴灉鑷煡锛堝簲鍏ㄩ儴杩斿洖 0锛�
+-- -----------------------------------------------------------------------------
+-- SELECT '绌轰覆ENGINE_VERSION_娈嬬暀' AS chk, COUNT(*) FROM ACT_RE_PROCDEF WHERE ENGINE_VERSION_ = ''
+-- UNION ALL SELECT '绌篗ETA_INFO_娈嬬暀' , COUNT(*) FROM ACT_RE_MODEL WHERE META_INFO_ IS NULL OR META_INFO_ = ''
+-- UNION ALL SELECT '鍒嗙被寰呰ˉ' , 0;
diff --git a/docs/sql/bpm_audit_flow_02_deploy_proc.sql b/docs/sql/bpm_audit_flow_02_deploy_proc.sql
new file mode 100644
index 0000000..7a8a49d
--- /dev/null
+++ b/docs/sql/bpm_audit_flow_02_deploy_proc.sql
@@ -0,0 +1,202 @@
+-- =============================================================================
+-- 鏂囦欢锛歜pm_audit_flow_02_deploy_proc.sql
+-- 鐢ㄩ�旓細BPM 瀹℃牳娴佺▼銆屾祦绋嬪畾涔夐儴缃层�嶆锛堢 2 涓墽琛岋紝闇�鍏堟墽琛� 01 淇/鍒嗙被鏂囦欢锛�
+-- 鐩爣搴擄細ruoyi-vue-pro
+-- 瑕佹眰锛�
+-- * MySQL 8.0+锛岃处鍙烽渶鍏峰 CREATE PROCEDURE 鏉冮檺
+-- * 浠� mysql CLI 鎵ц锛堝惈 DELIMITER锛夛細
+-- mysql -u<璐﹀彿> -p ruoyi-vue-pro < bpm_audit_flow_02_deploy_proc.sql
+-- * 妯℃澘锛氶粯璁や粠 ruoyi-vue-pro 鍐呭凡鏈夎鑼冩祦绋嬨�宔rp-finance-payment-audit銆嶅鍒讹紝
+-- 鍏� BPMN 涓衡�滃彂璧蜂汉鑺傜偣 + 鎻愪氦鍗抽�氳繃鈥�(candidateStrategy=36) 鐨勬渶绠�缁撴瀯锛�
+-- 閫傚悎鎵�鏈夊鎺ュ崟鎹厛璺戦�氾紱鍚庣画濡傞渶澶氱骇瀹℃壒鍙湪銆屾祦绋嬫ā鍨嬨�嶇晫闈㈣皟鏁淬��
+-- 鍋ュ.鎬ц璁★細
+-- * 骞傜瓑锛氱洰鏍� key 鑻ュ凡瀛樺湪锛堟棤璁烘縺娲�/鎸傝捣锛夆啋 鏁存璺宠繃锛屼笉閲嶅閮ㄧ讲銆佷笉浜х敓鏂扮増鏈��
+-- * 浜嬪姟锛氬崟娴佺▼ 5 寮犺〃鍐欏叆鍖呭湪涓�涓簨鍔″唴锛屼换涓�姝ュけ璐ヨ嚜鍔ㄥ洖婊氾紝涓嶇暀鍗婃垚鍝併��
+-- * 鑷锛歱rocdef ID = key:1:<32浣島uid>锛岃秴 64 瀛楃鐩存帴鎶ラ敊涓柇銆�
+-- * 绌哄�艰閬匡細ENGINE_VERSION_ 涓嶅啓鍏ョ┖涓�(淇濇寔 NULL)锛岄伩鍏� Flowable 鎻愪氦瀹℃壒鎶ラ敊锛�
+-- META_INFO_ 鍐欏叆鏈�灏忓悎娉� JSON(鍚� sort/type=10)锛岄伩鍏嶆ā鍨嬮〉/鍒楄〃 NPE銆�
+-- * 閲嶅鎵ц鏂囦欢瀹夊叏锛欴ROP PROCEDURE IF EXISTS 淇濊瘉鍙噸澶嶈繍琛屻��
+-- =============================================================================
+
+SET NAMES utf8mb4;
+
+-- 閮ㄧ讲鍓嶈嚜妫�锛氭ā鏉垮瓨鍦ㄦ�э紙搴旇繑鍥� 1 琛岋級
+SELECT KEY_, NAME_, SUSPENSION_STATE_ FROM ACT_RE_PROCDEF WHERE KEY_ = 'erp-finance-payment-audit';
+
+DROP PROCEDURE IF EXISTS bpm_deploy_flow_from_template;
+
+DELIMITER $$
+
+-- 浠庝竴涓�滄ā鏉挎祦绋嬧�濆鍒堕儴缃蹭竴涓柊瀹℃牳娴佺▼锛圔PMN 缁撴瀯涓�鑷达紝浠呮浛鎹� key/鍚嶇О锛�
+CREATE PROCEDURE bpm_deploy_flow_from_template(
+ IN p_key VARCHAR(64), -- 鏂版祦绋� key锛堥渶涓庝唬鐮佷晶鐩戝惉鍣ㄥ尮閰嶏級
+ IN p_name VARCHAR(128), -- 鏂版祦绋嬫樉绀哄悕
+ IN p_category VARCHAR(64), -- 褰掑睘娴佺▼鍒嗙被 code
+ IN p_template VARCHAR(64) -- 澶嶅埗鏉ユ簮妯℃澘娴佺▼ key
+)
+label_deploy: BEGIN
+ DECLARE v_exist INT DEFAULT 0;
+ DECLARE v_tpl_key VARCHAR(64) DEFAULT 'erp-finance-payment-audit';
+ DECLARE v_tpl_dep VARCHAR(64) DEFAULT NULL;
+ DECLARE v_tpl_name VARCHAR(255) DEFAULT NULL;
+ DECLARE v_dep VARCHAR(64);
+ DECLARE v_model_id VARCHAR(64);
+ DECLARE v_byte_id VARCHAR(64);
+ DECLARE v_procdef_id VARCHAR(64);
+ DECLARE v_meta TEXT;
+ DECLARE v_sort BIGINT;
+ DECLARE v_now DATETIME;
+
+ -- 浠讳綍寮傚父 鈫� 鍥炴粴骞堕噸鏂版姏鍑�
+ DECLARE EXIT HANDLER FOR SQLEXCEPTION
+ BEGIN
+ ROLLBACK;
+ RESIGNAL;
+ END;
+
+ -- 骞傜瓑锛歬ey 宸插瓨鍦ㄧ洿鎺ヨ烦杩�
+ SELECT COUNT(*) INTO v_exist FROM ACT_RE_PROCDEF WHERE KEY_ = p_key;
+ IF v_exist > 0 THEN
+ SELECT CONCAT('[SKIP] 娴佺▼宸插瓨鍦紝璺宠繃锛�', p_key) AS deploy_result;
+ LEAVE label_deploy;
+ END IF;
+
+ -- 妯℃澘瀹氫綅
+ IF p_template IS NOT NULL AND p_template <> '' THEN
+ SET v_tpl_key = p_template;
+ END IF;
+ SELECT DEPLOYMENT_ID_ INTO v_tpl_dep FROM ACT_RE_PROCDEF
+ WHERE KEY_ = v_tpl_key ORDER BY VERSION_ DESC LIMIT 1;
+ SELECT NAME_ INTO v_tpl_name FROM ACT_RE_PROCDEF
+ WHERE KEY_ = v_tpl_key ORDER BY VERSION_ DESC LIMIT 1;
+ IF v_tpl_dep IS NULL THEN
+ SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = CONCAT('妯℃澘娴佺▼涓嶅瓨鍦紝鏃犳硶澶嶅埗锛�', v_tpl_key);
+ END IF;
+
+ SET v_now = NOW(3);
+ SET v_sort = UNIX_TIMESTAMP(v_now) * 1000;
+ SET v_dep = REPLACE(UUID(), '-', '');
+ SET v_model_id = REPLACE(UUID(), '-', '');
+ SET v_byte_id = REPLACE(UUID(), '-', '');
+ SET v_procdef_id = CONCAT(p_key, ':1:', v_dep);
+ -- procdef ID 鍒� VARCHAR(64) 闀垮害瀹堝崼
+ IF CHAR_LENGTH(v_procdef_id) > 64 THEN
+ SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = CONCAT('娴佺▼ key 杩囬暱锛宲rocdef ID 灏嗚秴 64 瀛楃锛�', p_key);
+ END IF;
+
+ START TRANSACTION;
+
+ -- 1) 閮ㄧ讲璁板綍锛圓CT_RE_DEPLOYMENT 鏃� REV_ 鍒楋級
+ INSERT INTO ACT_RE_DEPLOYMENT
+ (ID_, NAME_, CATEGORY_, KEY_, TENANT_ID_, DEPLOY_TIME_, ENGINE_VERSION_)
+ VALUES
+ (v_dep, p_name, p_category, p_key, '', v_now, NULL);
+
+ -- 2) BPMN 瀛楄妭锛堝鍒舵ā鏉垮瓧鑺傚苟鏇挎崲 key 涓庢樉绀哄悕锛�
+ INSERT INTO ACT_GE_BYTEARRAY
+ (ID_, NAME_, DEPLOYMENT_ID_, BYTES_, GENERATED_)
+ SELECT
+ v_byte_id,
+ CONCAT(p_key, '.bpmn'),
+ v_dep,
+ CONVERT(
+ REPLACE(
+ REPLACE(CONVERT(BYTES_ USING utf8mb4), v_tpl_key, p_key),
+ v_tpl_name, p_name)
+ USING utf8mb4),
+ 0
+ FROM ACT_GE_BYTEARRAY
+ WHERE DEPLOYMENT_ID_ = v_tpl_dep
+ AND NAME_ = CONCAT(v_tpl_key, '.bpmn');
+
+ -- 3) 娴佺▼瀹氫箟锛堟縺娲绘�� SUSPENSION_STATE_=1锛汦NGINE_VERSION_ 鐣� NULL锛�
+ INSERT INTO ACT_RE_PROCDEF
+ (ID_, REV_, CATEGORY_, NAME_, KEY_, VERSION_, DEPLOYMENT_ID_, RESOURCE_NAME_,
+ DGRM_RESOURCE_NAME_, DESCRIPTION_, HAS_START_FORM_KEY_, HAS_GRAPHICAL_NOTATION_,
+ SUSPENSION_STATE_, TENANT_ID_, ENGINE_VERSION_, DERIVED_VERSION_)
+ VALUES
+ (v_procdef_id, 1, p_category, p_name, p_key, 1, v_dep, CONCAT(p_key, '.bpmn'),
+ NULL, NULL, 0, 1,
+ 1, '', NULL, 0);
+
+ -- 4) 娴佺▼妯″瀷锛堝惈鏈�灏忓悎娉� META_INFO_锛岄伩鍏嶆ā鍨嬪垪琛� NPE锛�
+ SET v_meta = CONCAT(
+ '{"type":10,"formType":10,"sort":', v_sort,
+ ',"visible":true,"allowCancelRunningProcess":true,"allowWithdrawTask":false',
+ ',"autoApprovalType":0,"description":"","formCustomCreatePath":"","formCustomViewPath":"",',
+ '"formId":null,"managerUserIds":[],"startUserIds":[],"startDeptIds":[],"icon":null,',
+ '"processBeforeTriggerSetting":null,"processAfterTriggerSetting":null,',
+ '"taskBeforeTriggerSetting":null,"taskAfterTriggerSetting":null,',
+ '"printTemplateSetting":null,"summarySetting":null,"titleSetting":null,"processIdRule":null}');
+ INSERT INTO ACT_RE_MODEL
+ (ID_, NAME_, KEY_, CATEGORY_, CREATE_TIME_, LAST_UPDATE_TIME_, VERSION_, META_INFO_, DEPLOYMENT_ID_, TENANT_ID_)
+ VALUES
+ (v_model_id, p_name, p_key, p_category, v_now, v_now, 1, v_meta, v_dep, '');
+
+ -- 5) 娴佺▼瀹氫箟鎵╁睍淇℃伅锛坢odel_type=10锛�
+ INSERT INTO bpm_process_definition_info
+ (process_definition_id, model_id, model_type, category, form_type, visible, sort,
+ allow_cancel_running_process, allow_withdraw_task,
+ creator, create_time, updater, update_time, deleted)
+ VALUES
+ (v_procdef_id, v_model_id, 10, p_category, 10, 1, v_sort,
+ 1, 1,
+ '1', v_now, '1', v_now, 0);
+
+ COMMIT;
+
+ SELECT CONCAT('[OK] 宸查儴缃叉柊瀹℃牳娴佺▼锛�', p_key, ' (procdef=', v_procdef_id, ')') AS deploy_result;
+END$$
+
+DELIMITER ;
+
+-- =============================================================================
+-- 鈶� 鎸夊崟鎹�愪釜閮ㄧ讲缂哄け娴佺▼锛堥噸澶嶆墽琛屼細鑷姩璺宠繃宸插瓨鍦ㄩ」锛�
+-- 鍙傛暟锛�(key, 鍚嶇О, 鍒嗙被code, 妯℃澘key)
+-- =============================================================================
+
+-- ERP 閿�鍞鍗曞鎵癸紙浠g爜鐩戝惉 key锛歴ale_order_approve锛�
+CALL bpm_deploy_flow_from_template('sale_order_approve', '閿�鍞鍗曞鎵�', 'sale_order_approve', 'erp-finance-payment-audit');
+-- ERP 閲囪喘璁㈠崟瀹℃壒锛堜唬鐮佺洃鍚� key锛歱urchase_order_approve锛�
+CALL bpm_deploy_flow_from_template('purchase_order_approve', '閲囪喘璁㈠崟瀹℃壒', 'purchase_order_approve', 'erp-finance-payment-audit');
+
+-- CRM 鍚堝悓瀹℃壒锛堜唬鐮佺洃鍚� key锛歝rm-contract-audit锛屾寕鏃㈡湁 contract_approve 鍒嗙被锛�
+CALL bpm_deploy_flow_from_template('crm-contract-audit', '鍚堝悓瀹℃壒', 'contract_approve', 'erp-finance-payment-audit');
+
+-- HRM 璇峰亣瀹℃壒锛堜唬鐮佺洃鍚� key锛歨rm_leave锛�
+CALL bpm_deploy_flow_from_template('hrm_leave', '璇峰亣瀹℃壒', 'hrm_leave_approve', 'erp-finance-payment-audit');
+-- HRM 鍔犵彮瀹℃壒锛堜唬鐮佺洃鍚� key锛歨rm_overtime锛�
+CALL bpm_deploy_flow_from_template('hrm_overtime', '鍔犵彮瀹℃壒', 'overtime_approve', 'erp-finance-payment-audit');
+-- HRM 绂昏亴瀹℃壒锛堜唬鐮佺洃鍚� key锛歨rm_resignation锛�
+CALL bpm_deploy_flow_from_template('hrm_resignation', '绂昏亴瀹℃壒', 'hrm_resignation_approve', 'erp-finance-payment-audit');
+-- HRM 璋冨姩瀹℃壒锛堜唬鐮佺洃鍚� key锛歨rm_transfer锛�
+CALL bpm_deploy_flow_from_template('hrm_transfer', '璋冨姩瀹℃壒', 'hrm_transfer_approve', 'erp-finance-payment-audit');
+-- HRM 鑰冨嫟寮傚父瀹℃壒锛堝叏閲忕洃鍚笉鎸� key锛屾寕鏃㈡湁 hrm_attendance_approve 鍒嗙被锛�
+CALL bpm_deploy_flow_from_template('hrm_attendance_approve', '鑰冨嫟寮傚父瀹℃壒', 'hrm_attendance_approve', 'erp-finance-payment-audit');
+
+-- SRM 渚涘簲鍟嗗噯鍏ュ鎵癸紙浠g爜鐩戝惉 key锛歴upplier_apply_approve锛�
+CALL bpm_deploy_flow_from_template('supplier_apply_approve', '渚涘簲鍟嗗噯鍏ュ鎵�', 'supplier_apply_approve', 'erp-finance-payment-audit');
+
+-- MES 浠撳簱鍏ュ簱 / 鍑哄簱 / 璋冩嫧瀹℃壒锛堜唬鐮佺洃鍚� key 鍥哄畾锛屾寕鏃㈡湁 wms_approve 鍒嗙被锛�
+CALL bpm_deploy_flow_from_template('wms_inbound_approve', '浠撳簱鍏ュ簱瀹℃壒', 'wms_approve', 'erp-finance-payment-audit');
+CALL bpm_deploy_flow_from_template('wms_outbound_approve', '浠撳簱鍑哄簱瀹℃壒', 'wms_approve', 'erp-finance-payment-audit');
+CALL bpm_deploy_flow_from_template('wms_transfer_approve', '浠撳簱璋冩嫧瀹℃壒', 'wms_approve', 'erp-finance-payment-audit');
+-- MES 閲囪喘鏀惰揣锛堝叆搴撳崟锛夊鎵癸紙鍏ㄩ噺鐩戝惉锛屾寕鏃㈡湁 item_receipt_approve 鍒嗙被锛�
+CALL bpm_deploy_flow_from_template('item_receipt_approve', '閲囪喘鍏ュ簱瀹℃壒', 'item_receipt_approve', 'erp-finance-payment-audit');
+-- MES 鎶ュ伐/鐢熶骇宸ュ崟瀹℃壒锛堜唬鐮佺洃鍚� key锛歮es-pro-feedback-audit锛�
+CALL bpm_deploy_flow_from_template('mes-pro-feedback-audit', '鎶ュ伐瀹℃壒', 'mes_pro_feedback_audit', 'erp-finance-payment-audit');
+
+-- =============================================================================
+-- 鈶� 閮ㄧ讲缁撴灉鏍¢獙锛堝簲鐪嬪埌 14 鏉℃柊娴佺▼涓� SUSPENSION_STATE_=1銆乵odel_type=10锛�
+-- =============================================================================
+SELECT p.KEY_, p.NAME_, p.VERSION_, p.SUSPENSION_STATE_ AS active_flag,
+ LENGTH(p.ID_) AS procdef_id_len,
+ i.model_type, i.category
+ FROM ACT_RE_PROCDEF p
+ LEFT JOIN bpm_process_definition_info i ON i.process_definition_id = p.ID_
+ WHERE p.KEY_ IN ('sale_order_approve','purchase_order_approve','crm-contract-audit',
+ 'hrm_leave','hrm_overtime','hrm_resignation','hrm_transfer',
+ 'hrm_attendance_approve','supplier_apply_approve',
+ 'wms_inbound_approve','wms_outbound_approve','wms_transfer_approve',
+ 'item_receipt_approve','mes-pro-feedback-audit')
+ ORDER BY p.KEY_;
--
Gitblit v1.9.3