first commit

This commit is contained in:
2026-02-06 23:26:59 +08:00
parent 0f3f1467b8
commit 6cf8248b2d
34 changed files with 2348 additions and 0 deletions
+87
View File
@@ -0,0 +1,87 @@
DELIMITER //
CREATE OR REPLACE PROCEDURE get_gantt_data(
IN p_projectid VARCHAR(100)
)
/*
Function : 配合 amis 的擴充元件(gantt), 取得甘特圖資料
Description: 獲取專案甘特圖資料,處理雲伺服器時間差問題
Build Date : 2023/07/19 (MariaDB 版本)
Modify History
Item Who Date Modify Docs
==== ========== ========== ================================================
1 Michael 2022/7/31 初始版本
2 Michael 2022/12/14 加入 Azure 雲端時間差處理
3 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
*/
BEGIN
-- 聲明變數
DECLARE v_year1 INT;
DECLARE v_start_date VARCHAR(10);
-- 設置默認起始日(去年1月1日)
SET v_year1 = YEAR(CURDATE()) - 1;
SET v_start_date = CONCAT(v_year1, '-01-01');
-- 創建臨時表存儲結果
DROP TEMPORARY TABLE IF EXISTS tmp_gantt_data;
CREATE TEMPORARY TABLE tmp_gantt_data (
id VARCHAR(100),
name VARCHAR(255),
ower VARCHAR(100),
per DECIMAL(5,2),
type TINYINT,
startTime DATE,
endTime DATE,
stoneTime DATE,
top INT,
`left` INT,
widthChild INT,
widthMe INT,
isShow TINYINT,
ROW_ID INT
);
-- 獲取專案PBI資料
INSERT INTO tmp_gantt_data
SELECT
pbiid AS id,
pbi_title AS name, -- 項目名稱
owner AS ower, -- 負責人
pbi_rate AS per, -- 進度(完成率)
1 AS type, -- 項目類型(1.PBI 2.mile stone 3.分組)
startdate AS startTime,
DATE_ADD(startdate, INTERVAL CAST(pbi_planworktime AS SIGNED) DAY) AS endTime,
'2022-01-01' AS stoneTime, -- 里程碑日
0 AS top, -- 初始top位置
DATEDIFF(startdate, v_start_date) * 40 AS `left`,
CAST(pbi_planworktime AS SIGNED) * 40 AS widthChild,
CAST(pbi_planworktime AS SIGNED) * 40 AS widthMe,
1 AS isShow,
@row_num := @row_num + 1 AS ROW_ID
FROM pms_pbi, (SELECT @row_num := 0) AS r
WHERE projectid = p_projectid
ORDER BY pbiid ASC;
-- 處理雲端時間差並返回結果
SELECT
id,
name,
ower,
per,
type,
cloud_addtime(startTime) AS startTime,
cloud_addtime(endTime) AS endTime,
cloud_addtime(stoneTime) AS stoneTime,
((ROW_ID-1) * 40) + 15 AS top,
`left`,
widthChild,
widthMe,
isShow
FROM tmp_gantt_data;
-- 臨時表會在會話結束時自動刪除
END //
DELIMITER ;