修正 bug
This commit is contained in:
@@ -22,6 +22,9 @@ BEGIN
|
|||||||
|
|
||||||
-- 根據傳入的 token 取得 userid, 並會判斷 token 是否仍有效(無效傳回空白)
|
-- 根據傳入的 token 取得 userid, 並會判斷 token 是否仍有效(無效傳回空白)
|
||||||
main_block: BEGIN
|
main_block: BEGIN
|
||||||
|
-- 取得 userid
|
||||||
|
SELECT userid INTO v_userid FROM sys_users WHERE token = p_token;
|
||||||
|
|
||||||
IF v_userid = '' THEN
|
IF v_userid = '' THEN
|
||||||
LEAVE main_block; -- 結束程序
|
LEAVE main_block; -- 結束程序
|
||||||
END IF;
|
END IF;
|
||||||
|
|||||||
+10
-1
@@ -1,6 +1,7 @@
|
|||||||
DELIMITER //
|
DELIMITER //
|
||||||
|
|
||||||
CREATE OR REPLACE PROCEDURE bpmm02_spread (
|
CREATE OR REPLACE PROCEDURE bpmm02_spread (
|
||||||
|
IN p_token VARCHAR(100), -- 可轉為 userid
|
||||||
IN p_uuid VARCHAR(100), -- 也可以傳入 functiontag
|
IN p_uuid VARCHAR(100), -- 也可以傳入 functiontag
|
||||||
IN p_personid VARCHAR(20), -- 起單人
|
IN p_personid VARCHAR(20), -- 起單人
|
||||||
IN p_source_pk_value VARCHAR(100) -- 單號
|
IN p_source_pk_value VARCHAR(100) -- 單號
|
||||||
@@ -19,8 +20,9 @@ CREATE OR REPLACE PROCEDURE bpmm02_spread (
|
|||||||
2 Michael 2022-11-05 初版完成基本功能
|
2 Michael 2022-11-05 初版完成基本功能
|
||||||
3 Michael 2022-11-29 新增 update assign_to
|
3 Michael 2022-11-29 新增 update assign_to
|
||||||
4 Michale 2023-04-14 配合 Node 機制, 加入 bpm 發送 mail 的通用機制
|
4 Michale 2023-04-14 配合 Node 機制, 加入 bpm 發送 mail 的通用機制
|
||||||
|
5 Michael 2026-03-14 加入 token, 原則上 sp 都必須傳入 token
|
||||||
*/
|
*/
|
||||||
BEGIN
|
main_block: BEGIN
|
||||||
DECLARE v_elementId VARCHAR(100);
|
DECLARE v_elementId VARCHAR(100);
|
||||||
DECLARE v_stepId VARCHAR(100);
|
DECLARE v_stepId VARCHAR(100);
|
||||||
DECLARE v_filterSet VARCHAR(1000);
|
DECLARE v_filterSet VARCHAR(1000);
|
||||||
@@ -48,6 +50,13 @@ BEGIN
|
|||||||
|
|
||||||
SET v_crlf = CHAR(10);
|
SET v_crlf = CHAR(10);
|
||||||
|
|
||||||
|
-- 根據 token 取得使用者 ID
|
||||||
|
SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1;
|
||||||
|
|
||||||
|
IF v_userid = '' THEN
|
||||||
|
LEAVE main_block; -- 結束程序
|
||||||
|
END IF;
|
||||||
|
|
||||||
-- 以請假單為例(由 tag 轉 uuid)
|
-- 以請假單為例(由 tag 轉 uuid)
|
||||||
IF LENGTH(p_uuid) < 20 THEN
|
IF LENGTH(p_uuid) < 20 THEN
|
||||||
SELECT flow_id INTO p_uuid FROM bpm_list WHERE functiontag = p_uuid;
|
SELECT flow_id INTO p_uuid FROM bpm_list WHERE functiontag = p_uuid;
|
||||||
|
|||||||
@@ -2,41 +2,29 @@ DELIMITER //
|
|||||||
|
|
||||||
CREATE OR REPLACE FUNCTION bpmm02_udf_spread_signer(
|
CREATE OR REPLACE FUNCTION bpmm02_udf_spread_signer(
|
||||||
p_uuid VARCHAR(100),
|
p_uuid VARCHAR(100),
|
||||||
p_personid VARCHAR(20), -- 起單人
|
p_personid VARCHAR(20),
|
||||||
p_source_pk_value VARCHAR(100), -- 單號
|
p_source_pk_value VARCHAR(100),
|
||||||
p_stepId VARCHAR(100),
|
p_stepId VARCHAR(100),
|
||||||
p_typeName VARCHAR(20),
|
p_typeName VARCHAR(20),
|
||||||
p_nodeName VARCHAR(20),
|
p_nodeName VARCHAR(20),
|
||||||
p_filterSet TEXT,
|
p_filterSet TEXT,
|
||||||
p_step INT
|
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
|
RETURNS TEXT
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE v_sql TEXT;
|
DECLARE v_sql TEXT DEFAULT '';
|
||||||
DECLARE v_tablename VARCHAR(100);
|
DECLARE v_tablename VARCHAR(100);
|
||||||
DECLARE v_source_pk VARCHAR(100);
|
DECLARE v_source_pk VARCHAR(100);
|
||||||
DECLARE v_stepName VARCHAR(100);
|
DECLARE v_stepName VARCHAR(100);
|
||||||
DECLARE v_roleName VARCHAR(100);
|
DECLARE v_roleName VARCHAR(100);
|
||||||
DECLARE v_source_note VARCHAR(100);
|
DECLARE v_source_note VARCHAR(100);
|
||||||
DECLARE v_userid VARCHAR(100);
|
DECLARE v_userid VARCHAR(100);
|
||||||
DECLARE v_role_users TEXT;
|
DECLARE v_status CHAR(1);
|
||||||
DECLARE v_notes VARCHAR(600);
|
|
||||||
DECLARE v_crlf VARCHAR(2);
|
|
||||||
|
|
||||||
SET v_crlf = CHAR(10);
|
-- 設定初始狀態:第一關為 'P' (簽核中),其餘為 'N' (待簽)
|
||||||
|
SET v_status = CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END;
|
||||||
|
|
||||||
IF p_nodeName = 'nodeNode' THEN
|
IF p_nodeName = 'nodeNode' THEN
|
||||||
-- 獲取基本資訊
|
|
||||||
SELECT source_table, source_pk, source_note
|
SELECT source_table, source_pk, source_note
|
||||||
INTO v_tablename, v_source_pk, v_source_note
|
INTO v_tablename, v_source_pk, v_source_note
|
||||||
FROM bpm_list WHERE flow_id = p_uuid;
|
FROM bpm_list WHERE flow_id = p_uuid;
|
||||||
@@ -45,46 +33,45 @@ BEGIN
|
|||||||
INTO v_roleName, v_stepName
|
INTO v_roleName, v_stepName
|
||||||
FROM bpm_setup WHERE flow_id = p_uuid AND stepId = p_stepId;
|
FROM bpm_setup WHERE flow_id = p_uuid AND stepId = p_stepId;
|
||||||
|
|
||||||
-- 根據類型生成不同的SQL
|
-- 修正:使用 INSERT ... SELECT 單一語句,避免分號造成的執行錯誤
|
||||||
IF p_typeName = 'fields' THEN
|
IF p_typeName = 'fields' THEN
|
||||||
SET v_sql = CONCAT(
|
SET v_sql = CONCAT(
|
||||||
'SELECT @userid:=', v_roleName, ', @notes:=', v_source_note,
|
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note) ',
|
||||||
' FROM ', v_tablename, ' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''';', v_crlf,
|
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ',
|
||||||
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note)', v_crlf,
|
v_roleName, ', ''', v_status, ''', NOW(), ', v_source_note,
|
||||||
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', @userid, ''',
|
' FROM ', v_tablename, ' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''''
|
||||||
CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes);'
|
|
||||||
);
|
);
|
||||||
|
|
||||||
ELSEIF p_typeName = 'roles' THEN
|
ELSEIF p_typeName = 'roles' THEN
|
||||||
-- 處理角色類型
|
|
||||||
IF v_roleName = 'manager' THEN
|
IF v_roleName = 'manager' THEN
|
||||||
SELECT bossid INTO v_userid FROM sys_users WHERE userid = p_personid;
|
SELECT bossid INTO v_userid FROM sys_users WHERE userid = p_personid;
|
||||||
SET v_role_users = CONCAT(
|
SET v_userid = IFNULL(v_userid, '4734');
|
||||||
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ''',
|
|
||||||
IFNULL(v_userid, '4734'), ''', ''',
|
SET v_sql = CONCAT(
|
||||||
CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes)'
|
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note) ',
|
||||||
|
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ',
|
||||||
|
'''', v_userid, ''', ''', v_status, ''', NOW(), ', v_source_note,
|
||||||
|
' FROM ', v_tablename, ' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''''
|
||||||
);
|
);
|
||||||
ELSE
|
ELSE
|
||||||
SET v_role_users = CONCAT(
|
-- 處理角色多人的情況
|
||||||
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step,
|
SET v_sql = CONCAT(
|
||||||
', userid, ''', CASE WHEN p_step = 1 THEN 'P' ELSE 'N' END, ''', NOW(), @notes ',
|
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note) ',
|
||||||
'FROM sys_userroles WHERE roleid = ''', v_roleName, ''''
|
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ',
|
||||||
|
'UR.userid, ''', v_status, ''', NOW(), T.', v_source_note,
|
||||||
|
' FROM sys_userroles UR ',
|
||||||
|
' CROSS JOIN ', v_tablename, ' T ',
|
||||||
|
' WHERE UR.roleid = ''', v_roleName, ''' AND T.', v_source_pk, ' = ''', p_source_pk_value, ''''
|
||||||
);
|
);
|
||||||
END IF;
|
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
|
ELSEIF p_typeName = 'users' THEN
|
||||||
-- 處理用戶類型
|
-- 修正:補齊 sign_status 欄位
|
||||||
SET v_sql = CONCAT(
|
SET v_sql = CONCAT(
|
||||||
'SELECT @notes:=', v_source_note, ' FROM ', v_tablename,
|
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note) ',
|
||||||
' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''';', v_crlf,
|
'SELECT ''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step, ', ',
|
||||||
'INSERT INTO bpm_flow_sign (flow_id, sourceid, stepName, flow_level, signerid, sign_status, create_date, sign_note)', v_crlf,
|
'''', v_roleName, ''', ''', v_status, ''', NOW(), ', v_source_note,
|
||||||
'VALUES (''', p_uuid, ''', ''', p_source_pk_value, ''', ''', v_stepName, ''', ', p_step,
|
' FROM ', v_tablename, ' WHERE ', v_source_pk, ' = ''', p_source_pk_value, ''''
|
||||||
', ''', v_roleName, ''', NOW(), @notes);'
|
|
||||||
);
|
);
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ BEGIN
|
|||||||
2 Michael 2023-02-01 為了更加彈性, @ip 及 @db 這2個欄位改傳入 ${ls:xxxx}, 測試可行(程式要調整前端呼叫的程式)
|
2 Michael 2023-02-01 為了更加彈性, @ip 及 @db 這2個欄位改傳入 ${ls:xxxx}, 測試可行(程式要調整前端呼叫的程式)
|
||||||
3 Michael 2024-02-04 將 hard code 的 ip 及 db 改為 local store, 版本也改為 v2
|
3 Michael 2024-02-04 將 hard code 的 ip 及 db 改為 local store, 版本也改為 v2
|
||||||
4 Michael 2024-03-02 amis 之前改版, 命名時不能使用 bpm-xxx 否則會無法識別, 一次修正
|
4 Michael 2024-03-02 amis 之前改版, 命名時不能使用 bpm-xxx 否則會無法識別, 一次修正
|
||||||
|
5 Michael 2026-03-14 建議所有 sp 都統一加入 token, 先從上呈開始
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DECLARE v_rets TEXT;
|
DECLARE v_rets TEXT;
|
||||||
@@ -50,6 +51,8 @@ BEGIN
|
|||||||
' "method": "post",', v_crlf,
|
' "method": "post",', v_crlf,
|
||||||
' "url": "${ls:base_ip}/xapi/v2/${ls:base_db}/bpmm02_spread/1/",', v_crlf,
|
' "url": "${ls:base_ip}/xapi/v2/${ls:base_db}/bpmm02_spread/1/",', v_crlf,
|
||||||
' "data": {', v_crlf,
|
' "data": {', v_crlf,
|
||||||
|
-- 新版統一加入 token 2026/03/14
|
||||||
|
' "token": "${ls:token}",', v_crlf,
|
||||||
' "para01": "', p_FunctionTag, '",', v_crlf,
|
' "para01": "', p_FunctionTag, '",', v_crlf,
|
||||||
-- 上呈人暫時先 hard code(慢慢想辦法), 目前是定義在 bpm_list.source_applicant (跨 db)
|
-- 上呈人暫時先 hard code(慢慢想辦法), 目前是定義在 bpm_list.source_applicant (跨 db)
|
||||||
' "para02": "${personid}",', v_crlf,
|
' "para02": "${personid}",', v_crlf,
|
||||||
|
|||||||
Reference in New Issue
Block a user