Files
Omni_app.db/sys_dashboard.txt
T
2026-02-06 23:26:59 +08:00

69 lines
2.2 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE sys_dashboard(
IN p_token VARCHAR(100)
)
/*
Description: 取得首頁的幾個統計用數字
今日行事曆:
待簽核表單:
待辦事項: -- 協同工作單
執行中專案: -- 本 Sprint 未完成的 PBI
未結案留言單:
Build Date : 2023/02/14
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2023/02/14 Init
2 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
*/
BEGIN
DECLARE v_userid VARCHAR(100);
DECLARE v_cnt1 INT DEFAULT 0;
DECLARE v_cnt2 INT DEFAULT 0;
DECLARE v_cnt3 INT DEFAULT 0;
DECLARE v_cnt4 INT DEFAULT 0;
DECLARE v_cnt5 INT DEFAULT 0;
-- 將 token 換成 userid
SELECT userid INTO v_userid FROM sys_users WHERE token = p_token LIMIT 1;
-- 今日行事曆(參考 sp=eip_getCalendar)
SELECT COUNT(*) INTO v_cnt1
FROM eip_core_calendar
WHERE DATE(start_time) = CURDATE() AND personid = v_userid;
-- 待簽核表單(參考 sp=bpm_sign_todo)
SELECT COUNT(*) INTO v_cnt2
FROM bpm_flow_sign a
JOIN bpm_list b ON a.flow_id = b.flow_id
JOIN basperson p ON a.signerid = p.personid
WHERE a.sign_status = 'P'
AND IFNULL(a.assign_to,'') = 'Y'
AND a.signerid = v_userid;
-- 待辦事項(建議是前後3天)
SELECT COUNT(*) INTO v_cnt3
FROM crmassign_m m
WHERE DATE(m.predictdate) BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
AND (m.personid2 = v_userid OR m.personid3 = v_userid);
-- 執行中 PBI(本 sprint 尚未完成, )
SELECT COUNT(*) INTO v_cnt4
FROM pms_pbi p
JOIN pms_sprint s ON p.sprintid = s.sprintid
WHERE DATE(p.startdate) BETWEEN DATE_SUB(CURDATE(), INTERVAL 3 DAY) AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)
AND CURDATE() BETWEEN DATE(s.sprint_startdate) AND DATE(s.sprint_enddate)
AND (p.controller = v_userid OR p.tester = v_userid);
-- 未結案留言單(規格要調整, 先暫緩)
-- 回傳 dataset
SELECT 0 AS code, 'ok' AS msg;
SELECT v_cnt1 AS dashboard1, v_cnt2 AS dashboard2,
v_cnt3 AS dashboard3, v_cnt4 AS dashboard4,
v_cnt5 AS dashboard5;
END //
DELIMITER ;