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 ;