95 lines
3.5 KiB
Plaintext
95 lines
3.5 KiB
Plaintext
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 ; |