99 lines
3.6 KiB
Plaintext
99 lines
3.6 KiB
Plaintext
DELIMITER //
|
|
|
|
CREATE OR REPLACE PROCEDURE eip_Calendar_crud (
|
|
IN p_functiontag VARCHAR(100),
|
|
IN p_id VARCHAR(100),
|
|
IN p_title NVARCHAR(100),
|
|
IN p_start_time VARCHAR(30),
|
|
IN p_end_time VARCHAR(30),
|
|
IN p_userid VARCHAR(20)
|
|
)
|
|
/*
|
|
Function : 行事曆資料的新增及修改, 並考慮雲端時間差問題
|
|
Description: 使用 Vue+FullCalendar 開發行事曆, 並用 iFrame 崁入 amis 環境
|
|
編輯行事曆: eip_Calendar_crud (本 sp)
|
|
讀取行事曆: eip_getCalendar
|
|
刪除行事曆: eip_Calendar_delete
|
|
原本是傳入 tablename, 目前統一都改傳入 functiontag, 擴充彈性較大(盡量不動 Vue+FullCalendar)
|
|
Build Date : 2023/07/19 (轉換為 MariaDB 版本)
|
|
|
|
Modify History
|
|
Item Who Date Modify Docs
|
|
==== ========== ========== ================================================
|
|
1 Michael 2024/03/11 傳入參數由 tablename 改為 functiontag
|
|
2 Michael 2025/07/20 改寫為 MariaDB 並最佳化(ChatGPT+DeepSeek)
|
|
*/
|
|
BEGIN
|
|
DECLARE v_adjusted_start DATETIME;
|
|
DECLARE v_adjusted_end DATETIME;
|
|
|
|
-- 調整雲端時間 (假設 cloud_adjusttime 函數已存在)
|
|
-- SET v_adjusted_start = cloud_adjusttime(p_start_time, 1);
|
|
-- SET v_adjusted_end = cloud_adjusttime(p_end_time, 1);
|
|
-- Michael 2025-11-21
|
|
SET v_adjusted_start = STR_TO_DATE( REPLACE(REPLACE(p_start_time, 'T', ' '), '.000Z', ''), '%Y-%m-%d %H:%i:%s');
|
|
SET v_adjusted_end = STR_TO_DATE( REPLACE(REPLACE(p_end_time, 'T', ' '), '.000Z', ''), '%Y-%m-%d %H:%i:%s');
|
|
|
|
-- 根據不同的 functiontag 處理不同的表
|
|
CASE p_functiontag
|
|
WHEN 'eipm15' THEN -- 會議室預約
|
|
UPDATE eipplace_fc SET
|
|
response_desc = p_title,
|
|
startdate = DATE(v_adjusted_start),
|
|
starttime = TIME(v_adjusted_start),
|
|
end_date = DATE(v_adjusted_end),
|
|
endtime = TIME(v_adjusted_end)
|
|
WHERE uniqueno = p_id;
|
|
|
|
WHEN 'eipm13' THEN -- 會議通知
|
|
UPDATE eipmeetingrec_m SET
|
|
meeting_title = p_title,
|
|
startdate = DATE(v_adjusted_start),
|
|
starttime = TIME(v_adjusted_start),
|
|
end_date = DATE(v_adjusted_end),
|
|
end_time = TIME(v_adjusted_end)
|
|
WHERE uniqueno = p_id;
|
|
|
|
WHEN 'eipm02' THEN -- 行程管理
|
|
UPDATE eip_new_calendar SET
|
|
title = p_title,
|
|
start_time = v_adjusted_start,
|
|
end_time = v_adjusted_end,
|
|
s_date = DATE(v_adjusted_start),
|
|
s_time = TIME_FORMAT(v_adjusted_start, '%H:%i'),
|
|
e_date = DATE(v_adjusted_end),
|
|
e_time = TIME_FORMAT(v_adjusted_end, '%H:%i')
|
|
WHERE uuid = p_id;
|
|
|
|
ELSE -- 默認處理 eip_core_calendar
|
|
IF p_id = '-1' AND p_userid IS NOT NULL AND p_userid != '' THEN
|
|
-- 新增記錄
|
|
INSERT INTO eip_core_calendar (
|
|
title, start_time, end_time, personid,
|
|
s_date, s_time, e_date, e_time
|
|
) VALUES (
|
|
p_title, v_adjusted_start, v_adjusted_end, p_userid,
|
|
DATE(v_adjusted_start),
|
|
TIME_FORMAT(v_adjusted_start, '%H:%i'),
|
|
DATE(v_adjusted_end),
|
|
TIME_FORMAT(v_adjusted_end, '%H:%i')
|
|
);
|
|
ELSE
|
|
-- 更新記錄
|
|
UPDATE eip_core_calendar SET
|
|
title = p_title,
|
|
start_time = v_adjusted_start,
|
|
end_time = v_adjusted_end,
|
|
s_date = DATE(v_adjusted_start),
|
|
s_time = TIME_FORMAT(v_adjusted_start, '%H:%i'),
|
|
e_date = DATE(v_adjusted_end),
|
|
e_time = TIME_FORMAT(v_adjusted_end, '%H:%i')
|
|
WHERE id = p_id;
|
|
END IF;
|
|
END CASE;
|
|
|
|
-- 返回成功結果
|
|
SELECT 0 AS code, 'ok' AS msg;
|
|
END //
|
|
|
|
DELIMITER ; |