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

57 lines
1.8 KiB
Plaintext

DELIMITER //
CREATE OR REPLACE PROCEDURE gex_chart_comm(
IN p_functiontag VARCHAR(20), -- 程式代號(可以自行控制讀取的資料來源)
IN p_date1 VARCHAR(10),
IN p_date2 VARCHAR(10),
IN p_type VARCHAR(20) -- bar/line/pie ...
)
/*
function : 客戶訂單業績排行前 10 的統計圖, 支援 5種圖形顯示, 這是 amis chart 類的報表的標準寫法
description: 將一般報表, 轉為 amis queryGroup 類的報表的 sp 範本 (本程式待驗證 ...)
build date : 2021/12/02
call sample:
CALL gex_chart_comm('opor11','2020-01-01','2020-12-31','pie')
modify history
item who date modify docs
==== ========== ========== ================================================
1 Michael 2021/12/02 新增
2 Michael 2025/08/06 改寫為 MariaDB 版本
*/
BEGIN
DECLARE v_uuid CHAR(100);
DECLARE v_data TEXT;
-- 生成 UUID
SET v_uuid = UUID();
-- 先刪除可能存在的舊數據
DELETE FROM dw_sys_chart_data WHERE uuid = v_uuid;
-- 客戶業績排行前 10
IF p_functiontag = 'OPOR11' then
INSERT INTO dw_sys_chart_data (uuid, functiontag, xname, xvalue)
SELECT v_uuid, p_functiontag, IFNULL(c.corpshortname, m.custid), CAST(SUM(totalamount) AS DECIMAL(18,2)) AS amt
FROM opoorder2_m m
LEFT JOIN bascustomer c ON m.custid = c.custid
WHERE billdate >= p_date1 AND billdate <= p_date2
GROUP BY IFNULL(c.corpshortname, m.custid)
ORDER BY SUM(totalamount) DESC
LIMIT 10;
-- else if ...
end if;
-- 調用通用函數 (假設已存在對應的 MariaDB 函數)
SELECT sys_genchart(v_uuid, p_type) INTO v_data;
-- 處理模板數據 (假設已存在對應的 MariaDB 存儲過程)
CALL sys_chart_process(v_uuid);
-- 返回結果
SELECT 0 AS code, 'ok' AS msg;
SELECT v_data AS jsoncode;
END //
DELIMITER ;