DELIMITER // CREATE OR REPLACE PROCEDURE zen_create_json_reset_codeid( IN p_uuid VARCHAR(100), IN p_FunctionTag VARCHAR(100), IN p_code_id VARCHAR(100), IN p_query_type VARCHAR(100) ) /* function : 判斷傳入的 FunctionTag, 重新設定 FunctionTag_org/FunctionTag/code_id description: 此段程式是因為 Wizard 除了支援完整 crud 的程式外, 也一併支援 view only, insert only 等不完全程式, 所以才會有此段程式 Build Date : 2023/12/20 Modify History Item Who Date Modify Docs ==== ========== ========== ================================================ 1 Michael 2023/12/20 根據 v1.0 重構 */ BEGIN DECLARE v_FunctionTag VARCHAR(100); DECLARE v_code_id VARCHAR(100); -- 通用寫法 SET v_FunctionTag = p_FunctionTag; SET v_code_id = p_code_id; /* @FunctionTag = crmm02 產生查詢專用的 ViewForm @FunctionTag_org = crmm02_V */ IF RIGHT(v_FunctionTag, 2) = '_V' THEN SET v_FunctionTag = SUBSTRING(v_FunctionTag, 1, LENGTH(v_FunctionTag)-2); -- 特別判斷一下 Template(先處理 MD, Single 暫時先不處理) IF v_code_id LIKE '%MasterDetail%' THEN SET v_code_id = 'MasterDetail-View'; ELSEIF v_code_id LIKE '%Single%' THEN -- Single 也一併支援了吧(ok) SET v_code_id = 'singleEntry-View'; END IF; END IF; /* 最單純的 SingleGridView(通常是被開窗查詢用) 2022-09-24 */ IF RIGHT(v_FunctionTag, 3) = '_gv' THEN SET v_FunctionTag = SUBSTRING(v_FunctionTag, 1, LENGTH(v_FunctionTag)-3); -- 適用於所有的表單 SET v_code_id = 'SingleGridView'; END IF; -- MD 的 Detail Insert(開發中...) IF RIGHT(v_FunctionTag, 3) = '_DI' THEN SET v_FunctionTag = SUBSTRING(v_FunctionTag, 1, LENGTH(v_FunctionTag)-3); -- 特別判斷一下 Template(先處理 MD, Single 暫時先不處理) IF v_code_id LIKE '%MasterDetail%' THEN SET v_code_id = 'MasterDetail-Detail-Insert'; END IF; END IF; IF RIGHT(v_FunctionTag, 2) = '_I' THEN SET v_FunctionTag = SUBSTRING(v_FunctionTag, 1, LENGTH(v_FunctionTag)-2); -- 特別判斷一下 Template(先處理 MD, Single 暫時先不處理) IF v_code_id LIKE '%Single%' THEN SET v_code_id = 'singleEntry-Insert'; ELSEIF v_code_id LIKE '%MasterDetail%' THEN -- MasterDetail 也一併支援了吧, 但是只會產生 Master 的 Insert(ok) SET v_code_id = 'MasterDetail-Insert'; END IF; END IF; -- 將傳入的 json 寫入暫存表方便處理 INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid, 'FunctionTag', v_FunctionTag, NOW()); INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid, 'code_id', v_code_id, NOW()); -- 一些簡單的 update 也放此處 /* 新增 query_type=C 複雜的多欄位Query E 簡單的單欄查詢 */ UPDATE zen_function SET query_type='E' WHERE IFNULL(query_type,'')=''; UPDATE zen_function SET op_width=100 WHERE op_width IS NULL; UPDATE zen_function SET is_bpm='N' WHERE is_bpm IS NULL; UPDATE zen_function SET is_extend='N' WHERE is_extend IS NULL; /* 處理一下 zen_fields 的 null 值 fieldchecknull,fieldro */ UPDATE zen_fields SET fieldchecknull = 'N' WHERE IFNULL(fieldchecknull,'') = ''; UPDATE zen_fields SET fieldro = 'N' WHERE IFNULL(fieldro,'') = ''; END //