DELIMITER // CREATE OR REPLACE PROCEDURE response_issue_status( IN p_token VARCHAR(100), IN p_functiontag VARCHAR(100), IN p_id INT, IN p_assign_user VARCHAR(10), IN p_new_status VARCHAR(100), IN p_ok_rate SMALLINT, IN p_release_readme TEXT ) /* Function : 處理問題狀態變更和指派 Description: 根據不同的功能標籤處理不同類型的問題狀態更新 Build Date : 2023/07/19 (MariaDB 版本) */ BEGIN DECLARE v_userid VARCHAR(10); DECLARE v_org_userid VARCHAR(10); DECLARE v_err_code SMALLINT; DECLARE v_seq INT; DECLARE v_err_msg VARCHAR(100); SET v_err_code = 0; SET v_err_msg = '操作成功'; -- 根據token獲取userid SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1; IF v_userid IS NULL OR v_userid = '' THEN SET v_err_code = 4; SET v_err_msg = '認證失敗,請重新登錄'; ELSE -- 根據功能標籤處理不同類型的問題 IF p_functiontag = 'pmsm11' THEN -- Product Backlog Item -- 獲取原始負責人和當前最大序號 SELECT controller INTO v_org_userid FROM pms_pbi WHERE pbiid = p_id; SELECT IFNULL(MAX(seqno), 0) INTO v_seq FROM pms_pbi_log WHERE pbiid = p_id; -- 寫入日誌 INSERT INTO pms_pbi_log (pbiid, response_date, response_by, assign_user, response, pbi_status, pbi_rate, seqno) VALUES (p_id, NOW(), v_userid, p_assign_user, p_release_readme, p_new_status, p_ok_rate, v_seq+1); -- 更新主表狀態 UPDATE pms_pbi SET pbi_status = IFNULL(p_new_status, pbi_status), controller = IFNULL(v_userid, controller), pbi_rate = IFNULL(p_ok_rate, pbi_rate) WHERE pbiid = p_id; ELSEIF p_functiontag = 'pmsm12' THEN -- Issue Log 維護作業 -- 獲取當前最大序號 SELECT IFNULL(MAX(seqno), 0) INTO v_seq FROM pms_issuelog_d WHERE issueid = p_id; -- 寫入日誌 INSERT INTO pms_issuelog_d (issueid, raised_date, raised_by, assign_user, response, issue_status, seqno) VALUES (p_id, NOW(), v_userid, p_assign_user, p_release_readme, p_new_status, v_seq+1); -- 更新主表狀態 UPDATE pms_issuelog SET issue_status = IFNULL(p_new_status, issue_status), responsible = IFNULL(p_assign_user, responsible) WHERE issueid = p_id; END IF; END IF; SELECT v_err_code AS code, v_err_msg AS msg; END // DELIMITER ;