first commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE FUNCTION bpmm02_udf_next_signer(
|
||||
p_uuid VARCHAR(100),
|
||||
p_source_pk_value VARCHAR(100), -- 原單單號
|
||||
p_id_next INT
|
||||
)
|
||||
/*
|
||||
Function : 取得下一關的人員列表
|
||||
Description:
|
||||
Build Date : 2022/11/27
|
||||
|
||||
Modify History
|
||||
Item Who Date Modify Docs
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2022/11/27 Init
|
||||
*/
|
||||
RETURNS TEXT
|
||||
BEGIN
|
||||
DECLARE v_imax INT;
|
||||
DECLARE v_imin INT;
|
||||
DECLARE v_inow INT;
|
||||
DECLARE v_signerid VARCHAR(20);
|
||||
DECLARE v_all_signers TEXT;
|
||||
DECLARE v_lastsep VARCHAR(1);
|
||||
DECLARE v_rowid INT;
|
||||
|
||||
-- 臨時表用於存儲簽核人
|
||||
DROP TEMPORARY TABLE IF EXISTS temp_signers;
|
||||
CREATE TEMPORARY TABLE temp_signers (
|
||||
signerid VARCHAR(100),
|
||||
rowid INT AUTO_INCREMENT PRIMARY KEY
|
||||
);
|
||||
|
||||
-- 以請假單為例(由 tag 轉 uuid)
|
||||
IF LENGTH(p_uuid) < 20 THEN
|
||||
SELECT flow_id INTO p_uuid FROM bpm_list WHERE functiontag = p_uuid;
|
||||
END IF;
|
||||
|
||||
-- 取得下一關的人
|
||||
INSERT INTO temp_signers (signerid)
|
||||
SELECT signerid FROM bpm_flow_sign
|
||||
WHERE flow_id = p_uuid AND sourceid = p_source_pk_value AND flow_level = p_id_next;
|
||||
|
||||
SELECT MAX(rowid), MIN(rowid) INTO v_imax, v_imin FROM temp_signers;
|
||||
SET v_signerid = '';
|
||||
SET v_all_signers = '';
|
||||
|
||||
WHILE v_imin <= v_imax DO
|
||||
SELECT signerid INTO v_signerid FROM temp_signers WHERE rowid = v_imin;
|
||||
IF v_imin = v_imax THEN
|
||||
SET v_lastsep = '';
|
||||
ELSE
|
||||
SET v_lastsep = ',';
|
||||
END IF;
|
||||
|
||||
SET v_all_signers = CONCAT(v_all_signers, v_signerid, v_lastsep);
|
||||
|
||||
SELECT MIN(rowid) INTO v_imin FROM temp_signers WHERE rowid > v_imin;
|
||||
END WHILE;
|
||||
|
||||
-- 清理臨時表
|
||||
DROP TEMPORARY TABLE IF EXISTS temp_signers;
|
||||
|
||||
RETURN v_all_signers;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user