first commit

This commit is contained in:
DATAEXPRESS\4734
2026-02-06 14:35:36 +08:00
commit b1b86343ed
15 changed files with 1419 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
DELIMITER //
CREATE OR REPLACE FUNCTION bpmm02_udf_spread_signer(
p_uuid VARCHAR(100),
p_personid VARCHAR(20), -- 起單人
p_source_pk_value VARCHAR(100), -- 單號
p_stepId VARCHAR(100),
p_typeName VARCHAR(20),
p_nodeName VARCHAR(20),
p_filterSet TEXT,
p_step INT
)
/*
Function : bpmm02_spread 產生簽核人 SQL script for insert bpm_flow_sign
Description:
Build Date : 2022/11/04
Modify History
Item Who Date Modify Docs
==== ========== ========== =================================================
1 Michael 2022/11/04 Init
*/
RETURNS TEXT
BEGIN
DECLARE v_sql TEXT;
DECLARE v_tablename VARCHAR(100);
DECLARE v_source_pk VARCHAR(100);
DECLARE v_stepName VARCHAR(100);
DECLARE v_roleName VARCHAR(100);
DECLARE v_source_note VARCHAR(100);
DECLARE v_userid VARCHAR(100);
DECLARE v_role_users TEXT;
DECLARE v_notes VARCHAR(600);
DECLARE v_crlf VARCHAR(2);
SET v_crlf = CHAR(10);
IF p_nodeName = 'nodeNode' THEN
-- 獲取基本資訊
SELECT source_table, source_pk, source_note
INTO v_tablename, v_source_pk, v_source_note
FROM bpm_list WHERE flow_id = p_uuid;
SELECT roleName, stepName
INTO v_roleName, v_stepName
FROM bpm_setup WHERE flow_id = p_uuid AND stepId = p_stepId;
-- 根據類型生成不同的SQL
IF p_typeName = 'fields' THEN
SET v_sql = CONCAT(
'SELECT @userid:=', v_roleName, ', @notes:=', v_source_note,
' FROM ', v_tablename, ' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''';', v_crlf,
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note)', v_crlf,
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', @userid, ''',
CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes);'
);
ELSEIF p_typeName = 'roles' THEN
-- 處理角色類型
IF v_roleName = 'manager' THEN
SELECT bossid INTO v_userid FROM sys_users WHERE userid = p_personid;
SET v_role_users = CONCAT(
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ''',
IFNULL(v_userid, '4734'), ''', ''',
CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes)'
);
ELSE
SET v_role_users = CONCAT(
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step,
', userid, ''', CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes ',
'FROM sys_userroles WHERE roleid = ''', v_roleName, ''''
);
END IF;
SET v_sql = CONCAT(
'SELECT @notes:=', v_source_note, ' FROM ', v_tablename,
' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''';', v_crlf,
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note)', v_crlf,
v_role_users, ';'
);
ELSEIF p_typeName = 'users' THEN
-- 處理用戶類型
SET v_sql = CONCAT(
'SELECT @notes:=', v_source_note, ' FROM ', v_tablename,
' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''';', v_crlf,
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note)', v_crlf,
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step,
', ''', v_roleName, ''', NOW(), @notes);'
);
END IF;
END IF;
RETURN v_sql;
END //
DELIMITER ;