Files
Omni_wizard.db/zen_create_json_reset_codeid.txt
T
2026-02-06 14:44:08 +08:00

95 lines
3.6 KiB
Plaintext

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 //