first commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE PROCEDURE bpmm02_sign_assign (
|
||||
IN p_token VARCHAR(100), -- 可轉為 userid
|
||||
IN p_sign_type VARCHAR(1), -- A(gree)/R(eject)
|
||||
IN p_uuid VARCHAR(100), -- 也可以傳入 functiontag
|
||||
IN p_source_pk_value VARCHAR(100) -- 單號
|
||||
)
|
||||
/*
|
||||
功能 : 配合 vue+jsplumb 的 bpm, 配合簽核同意, 駁回時的 [指定簽核人] select 元件所需內容
|
||||
描述 : 本程式用於 [指定簽核人]
|
||||
建立日期 : 2022/11/27
|
||||
|
||||
修改歷史
|
||||
項目 誰 日期 修改說明
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2022-11-27 Init
|
||||
*/
|
||||
BEGIN
|
||||
DECLARE v_userid VARCHAR(20);
|
||||
DECLARE v_id INT; -- 當前 id
|
||||
DECLARE v_flow_level INT; -- 當前 id 的 flow_level
|
||||
|
||||
-- 根據傳入的 token 取得 userid, 並會判斷 token 是否仍有效(無效傳回空白)
|
||||
proc_label: BEGIN
|
||||
SELECT checktoken(p_token) INTO v_userid;
|
||||
IF v_userid = '' THEN
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
-- 以請假單為例(由 tag 轉 uuid)
|
||||
IF LENGTH(p_uuid) < 20 THEN
|
||||
SELECT flow_id INTO p_uuid FROM bpm_list WHERE functiontag = p_uuid;
|
||||
END IF;
|
||||
|
||||
-- 取得當前待簽核的 id, 及前一或後一步驟的 id
|
||||
SELECT id, flow_level INTO v_id, v_flow_level FROM bpm_flow_sign
|
||||
WHERE flow_id = p_uuid AND sourceid = p_source_pk_value AND signerid = v_userid AND sign_status = 'P';
|
||||
|
||||
-- 如果不符合條件, 就直接離開
|
||||
IF v_id IS NULL THEN
|
||||
LEAVE proc_label;
|
||||
END IF;
|
||||
|
||||
-- 返回基本狀態
|
||||
SELECT 0 AS code, 'ok' AS msg;
|
||||
|
||||
IF p_sign_type = 'A' THEN
|
||||
-- 同意, 下一關
|
||||
SELECT '*' AS value, '不指派' AS label
|
||||
UNION
|
||||
SELECT s.signerid AS value, p.personcname AS label FROM bpm_flow_sign s
|
||||
LEFT JOIN basperson p ON s.signerid = p.personid
|
||||
WHERE flow_id = p_uuid AND sourceid = p_source_pk_value AND flow_level = v_flow_level + 1;
|
||||
|
||||
ELSEIF p_sign_type = 'R' THEN
|
||||
-- 駁回, 前一關(駁回可以回之前任何一關), 但是必須 assign_to=Y(之前有簽過的人)
|
||||
SELECT '*' AS value, '不指派' AS label
|
||||
UNION
|
||||
SELECT s.signerid AS value, p.personcname AS label FROM bpm_flow_sign s
|
||||
LEFT JOIN basperson p ON s.signerid = p.personid
|
||||
WHERE flow_id = p_uuid AND sourceid = p_source_pk_value AND flow_level < v_flow_level AND assign_to = 'Y';
|
||||
END IF;
|
||||
|
||||
END;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user