From 8016caca4816e7e1451a9e8b411ca442279c473c Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期四, 27 八月 2026 14:32:33 +0800
Subject: [PATCH] feat(erp): 销售订单审批SQL补充BPM流程定义部署

---
 sql/sale_order_bpm_approval.sql |  108 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 99 insertions(+), 9 deletions(-)

diff --git a/sql/sale_order_bpm_approval.sql b/sql/sale_order_bpm_approval.sql
index e28b040..d266b7a 100644
--- a/sql/sale_order_bpm_approval.sql
+++ b/sql/sale_order_bpm_approval.sql
@@ -3,11 +3,9 @@
 -- 璇存槑:
 --   1. 鍙噸澶嶆墽琛�(骞傜瓑),閲嶅鎵ц涓嶄細鎶ラ敊/閲嶅鎻掑叆
 --   2. 椤圭洰涓嶄娇鐢ㄥ绉熸埛,鑴氭湰涓嶅寘鍚� tenant_id
---   3. BPM 娴佺▼瀹氫箟(sale_order_approve)
---      闇�瑕佸湪銆屽崗鍚屽姙鍏� -> 娴佺▼绠$悊銆嶄腑鍒涘缓骞跺彂甯�,鏃犳硶鐢� SQL 瀹屾垚,瑙佹枃鏈鏄�
+--   3. 鏈剼鏈寘鍚� BPM 娴佺▼瀹氫箟(sale_order_approve)鐨勯儴缃�,鎵ц鍚庡嵆鍙娇鐢�
 -- ============================================================
 
--- ------------------------------------------------------------
 -- 1. erp_sale_order 琛� BPM 瀛楁(骞傜瓑:缂哄垪鎵嶅姞)
 -- ------------------------------------------------------------
 SET @s1 = IF((SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='erp_sale_order' AND column_name='process_instance_id')=0,
@@ -73,10 +71,102 @@
 WHERE status = 10 AND deleted = 0;
 
 -- ============================================================
--- 娉ㄦ剰:浠ヤ笅娴佺▼瀹氫箟闇�瑕佸湪銆屽崗鍚屽姙鍏� -> 娴佺▼绠$悊銆嶄腑鍒涘缓骞跺彂甯�,鏃犳硶鐢� SQL 瀹屾垚
---   1. 娴佺▼ key: sale_order_approve
---      鍚嶇О: 閿�鍞鍗曞鎵�
---      鍒嗙被: sale_order_approve(瀵瑰簲鏈剼鏈 2 姝�)
---      瀹℃壒浜�: 鎸夐渶閰嶇疆
---      琛ㄥ崟: 鏅�氳〃鍗�(琛ㄥ崟1);閰嶅悎 bpm_business_attach 灞曠ず閿�鍞鍗曡鎯�
+-- 6. BPM 娴佺▼瀹氫箟閮ㄧ讲: sale_order_approve(骞傜瓑,濡傚凡瀛樺湪鍒欒烦杩�)
+-- ============================================================
+INSERT INTO ACT_RE_DEPLOYMENT (ID_, NAME_, CATEGORY_, KEY_, TENANT_ID_, DEPLOY_TIME_, DERIVED_FROM_, DERIVED_FROM_ROOT_, PARENT_DEPLOYMENT_ID_, ENGINE_VERSION_)
+SELECT '532b0fc9-a1cb-11f1-b320-00ff263cc5e4', '閿�鍞鍗曞鎵�', 'sale_order_approve', 'sale_order_approve', '', NOW(), NULL, NULL, '532b0fc9-a1cb-11f1-b320-00ff263cc5e4', NULL FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ACT_RE_PROCDEF WHERE KEY_='sale_order_approve');
+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_)
+SELECT 'sale_order_approve:1:537fe68c-a1cb-11f1-b320-00ff263cc5e4', 1, 'sale_order_approve', '閿�鍞鍗曞鎵�', 'sale_order_approve', '1', '532b0fc9-a1cb-11f1-b320-00ff263cc5e4', 'sale_order_approve.bpmn', 'sale_order_approve.sale_order_approve.png', NULL, '0', '1', '1', '', NULL FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ACT_RE_PROCDEF WHERE KEY_='sale_order_approve');
+INSERT INTO ACT_GE_BYTEARRAY (ID_, REV_, NAME_, DEPLOYMENT_ID_, BYTES_, GENERATED_)
+SELECT '532b0fca-a1cb-11f1-b320-00ff263cc5e4', 1, 'sale_order_approve.bpmn', '532b0fc9-a1cb-11f1-b320-00ff263cc5e4', '<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.omg.org/spec/BPMN/20100524/MODEL">
+  <process id="sale_order_approve" name="閿�鍞鍗曞鎵�" isExecutable="true">
+    <startEvent id="StartEvent" name="寮�濮�"></startEvent>
+    <userTask id="StartUserNode" name="鍙戣捣浜�">
+      <extensionElements>
+        <flowable:approveType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:approveType>
+        <flowable:candidateStrategy xmlns:flowable="http://flowable.org/bpmn"><![CDATA[36]]></flowable:candidateStrategy>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="鎻愪氦" enable="true" id="1"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="鎷掔粷" enable="false" id="2"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="杞姙" enable="false" id="3"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="濮旀淳" enable="false" id="4"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="鍔犵" enable="false" id="5"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="閫�鍥�" enable="false" id="6"></flowable:buttonsSetting>
+        <flowable:assignStartUserHandlerType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[2]]></flowable:assignStartUserHandlerType>
+      </extensionElements>
+    </userTask>
+    <userTask id="Activity_sale_order_approve" name="瀹℃壒浜�">
+      <extensionElements>
+        <flowable:approveType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:approveType>
+        <flowable:candidateStrategy xmlns:flowable="http://flowable.org/bpmn"><![CDATA[30]]></flowable:candidateStrategy>
+        <flowable:candidateParam xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:candidateParam>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="閫氳繃" enable="true" id="1"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="鎷掔粷" enable="true" id="2"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="杞姙" enable="true" id="3"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="濮旀淳" enable="true" id="4"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="鍔犵" enable="true" id="5"></flowable:buttonsSetting>
+        <flowable:buttonsSetting xmlns:flowable="http://flowable.org/bpmn" displayName="閫�鍥�" enable="true" id="6"></flowable:buttonsSetting>
+        <flowable:approveMethod xmlns:flowable="http://flowable.org/bpmn"><![CDATA[4]]></flowable:approveMethod>
+        <flowable:rejectHandlerType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:rejectHandlerType>
+        <flowable:assignStartUserHandlerType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:assignStartUserHandlerType>
+        <flowable:assignEmptyHandlerType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[1]]></flowable:assignEmptyHandlerType>
+        <flowable:signEnable xmlns:flowable="http://flowable.org/bpmn"><![CDATA[false]]></flowable:signEnable>
+        <flowable:reasonRequire xmlns:flowable="http://flowable.org/bpmn"><![CDATA[false]]></flowable:reasonRequire>
+        <flowable:nodeType xmlns:flowable="http://flowable.org/bpmn"><![CDATA[11]]></flowable:nodeType>
+      </extensionElements>
+      <multiInstanceLoopCharacteristics isSequential="true" flowable:collection="${coll_userList}">
+        <loopCardinality>1</loopCardinality>
+        <completionCondition>${ nrOfCompletedInstances &gt;= nrOfInstances }</completionCondition>
+      </multiInstanceLoopCharacteristics>
+    </userTask>
+    <endEvent id="EndEvent" name="缁撴潫"></endEvent>
+    <sequenceFlow id="sequenceFlow-55e2f6d8-5af6-4ea5-924b-e6ad6eee3d5f" sourceRef="StartEvent" targetRef="StartUserNode"></sequenceFlow>
+    <sequenceFlow id="sequenceFlow-37666882-17da-46ee-840f-7de7a2211060" sourceRef="StartUserNode" targetRef="Activity_sale_order_approve"></sequenceFlow>
+    <sequenceFlow id="sequenceFlow-b0342e71-0163-43ce-83d4-955beba1eda4" sourceRef="Activity_sale_order_approve" targetRef="EndEvent"></sequenceFlow>
+  </process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_sale_order_approve">
+    <bpmndi:BPMNPlane bpmnElement="sale_order_approve" id="BPMNPlane_sale_order_approve">
+      <bpmndi:BPMNShape bpmnElement="StartUserNode" id="BPMNShape_StartUserNode">
+        <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="0.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="Activity_sale_order_approve" id="BPMNShape_Activity_sale_order_approve">
+        <omgdc:Bounds height="60.0" width="100.0" x="230.0" y="0.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="StartEvent" id="BPMNShape_StartEvent">
+        <omgdc:Bounds height="30.0" width="30.0" x="0.0" y="15.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="EndEvent" id="BPMNShape_EndEvent">
+        <omgdc:Bounds height="30.0" width="30.0" x="380.0" y="15.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="sequenceFlow-37666882-17da-46ee-840f-7de7a2211060" id="BPMNEdge_sequenceFlow-37666882-17da-46ee-840f-7de7a2211060">
+        <omgdi:waypoint x="180.0" y="30.0"></omgdi:waypoint>
+        <omgdi:waypoint x="230.0" y="30.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sequenceFlow-55e2f6d8-5af6-4ea5-924b-e6ad6eee3d5f" id="BPMNEdge_sequenceFlow-55e2f6d8-5af6-4ea5-924b-e6ad6eee3d5f">
+        <omgdi:waypoint x="30.0" y="30.0"></omgdi:waypoint>
+        <omgdi:waypoint x="80.0" y="30.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="sequenceFlow-b0342e71-0163-43ce-83d4-955beba1eda4" id="BPMNEdge_sequenceFlow-b0342e71-0163-43ce-83d4-955beba1eda4">
+        <omgdi:waypoint x="330.0" y="30.0"></omgdi:waypoint>
+        <omgdi:waypoint x="380.0" y="30.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>', 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ACT_GE_BYTEARRAY WHERE NAME_='sale_order_approve.bpmn');
+INSERT INTO ACT_RE_MODEL (ID_, REV_, NAME_, KEY_, CATEGORY_, CREATE_TIME_, LAST_UPDATE_TIME_, VERSION_, META_INFO_, DEPLOYMENT_ID_, TENANT_ID_)
+SELECT '52b96236-a1cb-11f1-b320-00ff263cc5e4', 1, '閿�鍞鍗曞鎵�', 'sale_order_approve', 'sale_order_approve', NOW(), NOW(), '1', '{"allowCancelRunningProcess":true,"allowWithdrawTask":true,"autoApprovalType":null,"description":"閿�鍞鍗曟彁浜ゅ悗杩涘叆鍗忓悓鍔炲叕瀹℃壒","formCustomCreatePath":null,"formCustomViewPath":null,"formId":1,"formType":10,"icon":null,"managerUserIds":[1],"printTemplateSetting":null,"processAfterTriggerSetting":null,"processBeforeTriggerSetting":null,"processIdRule":null,"sort":1787584300000,"startDeptIds":null,"startUserIds":null,"summarySetting":null,"taskAfterTriggerSetting":null,"taskBeforeTriggerSetting":null,"titleSetting":null,"type":20,"visible":true}', '532b0fc9-a1cb-11f1-b320-00ff263cc5e4', '' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ACT_RE_MODEL WHERE KEY_='sale_order_approve');
+INSERT INTO bpm_process_definition_info (process_definition_id, model_id, model_type, category, icon, description, form_type, form_id, form_conf, form_fields, form_custom_create_path, form_custom_view_path, simple_model, visible, sort, start_user_ids, start_dept_ids, manager_user_ids, allow_cancel_running_process, allow_withdraw_task, auto_approval_type, creator, create_time, updater, update_time, deleted)
+SELECT 'sale_order_approve:1:537fe68c-a1cb-11f1-b320-00ff263cc5e4', '52b96236-a1cb-11f1-b320-00ff263cc5e4', '20', 'sale_order_approve', NULL, '閿�鍞鍗曟彁浜ゅ悗杩涘叆鍗忓悓鍔炲叕瀹℃壒', '10', '1', '{"form":{"layout":"horizontal","labelAlign":"right","size":"middle","colon":false,"labelCol":{"style":{"width":"125px"}},"wrapperCol":{"span":24},"labelWidth":"100px"},"resetBtn":{"show":false,"innerText":"閲嶇疆"},"submitBtn":{"show":true,"innerText":"鎻愪氦"}}', '["{\\"type\\":\\"input\\",\\"field\\":\\"Fyqymqqdoln2abc\\",\\"title\\":\\"濮撳悕\\",\\"info\\":\\"\\",\\"$required\\":false,\\"_fc_id\\":\\"id_Fuplmqqdoln2acc\\",\\"name\\":\\"ref_F18omqqdoln2adc\\",\\"_fc_drag_tag\\":\\"input\\",\\"display\\":true,\\"hidden\\":false}", "{\\"type\\":\\"input\\",\\"field\\":\\"Fh6gmqqdooy5aec\\",\\"title\\":\\"骞撮緞\\",\\"info\\":\\"\\",\\"$required\\":false,\\"_fc_id\\":\\"id_F5whmqqdooy5afc\\",\\"name\\":\\"ref_Fltemqqdooy5agc\\",\\"_fc_drag_tag\\":\\"input\\",\\"display\\":true,\\"hidden\\":false}", "{\\"type\\":\\"select\\",\\"field\\":\\"F5mrmqqdutnnabc\\",\\"title\\":\\"閫夋嫨鍣╘\",\\"info\\":\\"\\",\\"effect\\":{\\"fetch\\":\\"\\"},\\"$required\\":false,\\"options\\":[{\\"label\\":\\"閫夐」01\\",\\"value\\":\\"1\\"},{\\"label\\":\\"閫夐」02\\",\\"value\\":\\"2\\"},{\\"label\\":\\"閫夐」03\\",\\"value\\":\\"3\\"}],\\"_fc_id\\":\\"id_Fhnumqqdutnoacc\\",\\"name\\":\\"ref_Fd1wmqqdutnoadc\\",\\"_fc_drag_tag\\":\\"select\\",\\"display\\":true,\\"hidden\\":false}", "{\\"type\\":\\"ApiSelect\\",\\"field\\":\\"dc4b501620bb4c8184aaaeb66398324a\\",\\"title\\":\\"鎺ュ彛閫夋嫨鍣╘\",\\"info\\":\\"\\",\\"$required\\":false,\\"props\\":{\\"method\\":\\"GET\\"},\\"_fc_id\\":\\"id_F6ewmrbn96xdc3c\\",\\"name\\":\\"ref_F1jomrbn96xdc4c\\",\\"display\\":true,\\"hidden\\":false,\\"_fc_drag_tag\\":\\"ApiSelect\\"}"]', NULL, NULL, '{"buttonsSetting":[{"displayName":"鎻愪氦","enable":true,"id":1},{"displayName":"鎷掔粷","enable":false,"id":2},{"displayName":"杞姙","enable":false,"id":3},{"displayName":"濮旀淳","enable":false,"id":4},{"displayName":"鍔犵","enable":false,"id":5},{"displayName":"閫�鍥�","enable":false,"id":6}],"childNode":{"approveMethod":4,"approveType":1,"assignEmptyHandler":{"type":1,"userIds":null},"assignStartUserHandlerType":1,"buttonsSetting":[{"displayName":"閫氳繃","enable":true,"id":1},{"displayName":"鎷掔粷","enable":true,"id":2},{"displayName":"杞姙","enable":true,"id":3},{"displayName":"濮旀淳","enable":true,"id":4},{"displayName":"鍔犵","enable":true,"id":5},{"displayName":"閫�鍥�","enable":true,"id":6}],"candidateParam":"1","candidateStrategy":30,"childNode":{"id":"EndEvent","name":"缁撴潫","type":1},"fieldsPermission":[],"id":"Activity_sale_order_approve","name":"瀹℃壒浜�","reasonRequire":false,"rejectHandler":{"returnNodeId":null,"type":1},"showText":"鎸囧畾鎴愬憳鎴栨寚瀹氳鑹插鎵�","signEnable":false,"skipExpression":"","taskAssignListener":{"body":[],"enable":false,"header":[],"path":null},"taskCompleteListener":{"body":[],"enable":false,"header":[],"path":null},"taskCreateListener":{"body":[],"enable":false,"header":[],"path":null},"timeoutHandler":{"enable":false,"maxRemindCount":null,"timeDuration":null,"type":null},"type":11},"fieldsPermission":[],"id":"StartUserNode","name":"鍙戣捣浜�","showText":"鍙戣捣浜�","type":10}', 1, '1787584300000', '', NULL, '1', 1, 1, NULL, '1', NOW(), '1', NOW(), 0 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM bpm_process_definition_info WHERE deleted=0 AND category='sale_order_approve');
+
+-- ============================================================
+-- 璇存槑:浠ヤ笂涓洪攢鍞鍗曞鎵规帴鍏ュ崗鍚屽姙鍏殑鍏ㄩ儴鏁版嵁搴撳彉鏇�
+--   1. 姝ラ 1-5 涓鸿〃缁撴瀯/鍒嗙被/瀛楀吀/涓氬姟鏄犲皠/瀛橀噺鏁版嵁杩佺Щ
+--   2. 姝ラ 6 涓� BPM 娴佺▼瀹氫箟(sale_order_approve)閮ㄧ讲
+--   3. 瀹℃壒浜洪粯璁や负鐢ㄦ埛 id=1(admin),濡傞渶璋冩暣璇峰湪銆屽崗鍚屽姙鍏� -> 娴佺▼绠$悊銆嶄慨鏀�
+-- ============================================================
+-- ============================================================
+-- 鍏ㄩ儴鏁版嵁搴撳彉鏇村凡瀹屾垚
+--   1. 姝ラ 1-5: 琛ㄧ粨鏋� / BPM鍒嗙被 / 瀹℃壒瀛楀吀 / 涓氬姟璇︽儏鏄犲皠 / 瀛橀噺鏁版嵁杩佺Щ
+--   2. 姝ラ 6:   BPM 娴佺▼瀹氫箟(sale_order_approve)閮ㄧ讲(骞傜瓑)
+--   3. 瀹℃壒浜洪粯璁や负鐢ㄦ埛 id=1(admin),濡傞渶璋冩暣璇峰湪銆屽崗鍚屽姙鍏� -> 娴佺▼绠$悊銆嶄慨鏀规祦绋�
 -- ============================================================

--
Gitblit v1.9.3