first commit
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE PROCEDURE zen_create_json_prepare_detaildata(
|
||||
IN p_uuid VARCHAR(100),
|
||||
IN p_FunctionTag VARCHAR(100),
|
||||
IN p_code_id VARCHAR(100),
|
||||
IN p_detail_table VARCHAR(100),
|
||||
IN p_detail_key VARCHAR(100),
|
||||
IN p_detail_sort_fieldname VARCHAR(100),
|
||||
IN p_query_type VARCHAR(1)
|
||||
)
|
||||
/*
|
||||
功能 : amis Wizard 產生 json UI 的核心程式(每個 Component 有各自的 json UI 定義)
|
||||
描述: 本段 sp 主要是設定 master-detail 中 detail 相關的 json 定義
|
||||
建立日期 : 2023/12/20
|
||||
|
||||
修改歷史
|
||||
項目 誰 日期 修改說明
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2023/12/20 根據 v1.0 重構
|
||||
*/
|
||||
BEGIN
|
||||
DECLARE v_uuid_d VARCHAR(100);
|
||||
DECLARE v_detail_fields VARCHAR(800);
|
||||
DECLARE v_GridFooter_Sum VARCHAR(2000);
|
||||
DECLARE v_is_footer_sum VARCHAR(1);
|
||||
DECLARE v_grid_footer_sum VARCHAR(2000);
|
||||
DECLARE v_first_formula_in INT;
|
||||
DECLARE v_pos INT;
|
||||
DECLARE v_imax INT;
|
||||
DECLARE v_imin INT;
|
||||
DECLARE v_crlf VARCHAR(2);
|
||||
DECLARE v_lastsep VARCHAR(1);
|
||||
DECLARE v_comps TEXT;
|
||||
DECLARE v_db VARCHAR(200);
|
||||
DECLARE v_ip VARCHAR(200);
|
||||
DECLARE v_query_type_data TEXT;
|
||||
DECLARE v_keyword_search VARCHAR(600);
|
||||
DECLARE v_fieldname VARCHAR(100);
|
||||
DECLARE v_rowid INT;
|
||||
|
||||
SET v_crlf = CONCAT(CHAR(13), CHAR(10));
|
||||
SET v_ip = '${ls:base_ip}';
|
||||
SET v_db = '${ls:base_db}';
|
||||
|
||||
/*
|
||||
建立臨時表儲存 detail 欄位資訊
|
||||
*/
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_default3 (
|
||||
fieldname VARCHAR(100),
|
||||
is_footer_sum VARCHAR(1),
|
||||
rowid INT AUTO_INCREMENT PRIMARY KEY
|
||||
);
|
||||
|
||||
TRUNCATE TABLE tmp_default3;
|
||||
|
||||
-- 取得 detail 的欄位名稱(要包含 pk 欄位)
|
||||
INSERT INTO tmp_default3 (fieldname, is_footer_sum)
|
||||
SELECT fieldname, is_footer_sum
|
||||
FROM zen_fields
|
||||
WHERE functiontag = p_functiontag and fieldblock >= 90 and fieldsh = 'Y'
|
||||
ORDER BY seqno;
|
||||
|
||||
SET v_detail_fields = '';
|
||||
SET v_GridFooter_Sum = '';
|
||||
SET v_grid_footer_sum = '';
|
||||
SET v_pos = 0;
|
||||
|
||||
SELECT MAX(rowid) INTO v_imax FROM tmp_default3;
|
||||
SELECT MIN(rowid) INTO v_imin FROM tmp_default3;
|
||||
|
||||
WHILE v_imin <= v_imax DO
|
||||
SELECT fieldname, is_footer_sum INTO v_fieldname, v_is_footer_sum
|
||||
FROM tmp_default3 WHERE rowid = v_imin;
|
||||
|
||||
IF v_imin = v_imax THEN
|
||||
SET v_lastsep = '';
|
||||
ELSE
|
||||
SET v_lastsep = ',';
|
||||
END IF;
|
||||
|
||||
SET v_detail_fields = CONCAT(v_detail_fields, v_fieldname, v_lastsep);
|
||||
|
||||
-- 加入 grid_footer_sum 的判斷
|
||||
SET v_pos = v_pos + 1;
|
||||
IF v_is_footer_sum = 'Y' THEN
|
||||
IF v_grid_footer_sum = '' THEN
|
||||
SET v_grid_footer_sum = CONCAT(
|
||||
' {', v_crlf,
|
||||
' "type": "text",', v_crlf,
|
||||
' "text": "合計",', v_crlf,
|
||||
' "className": "right-10",', v_crlf,
|
||||
' "colSpan": ', CAST(v_pos-1 AS CHAR), v_crlf,
|
||||
' },', v_crlf,
|
||||
' {', v_crlf,
|
||||
' "type": "tpl",', v_crlf,
|
||||
' "tpl": "${details|pick:',v_fieldname,'|sum}"', v_crlf,
|
||||
' },', v_crlf);
|
||||
ELSE
|
||||
SET v_grid_footer_sum = CONCAT(v_grid_footer_sum,
|
||||
' {', v_crlf,
|
||||
' "type": "tpl",', v_crlf,
|
||||
' "tpl": "${details|pick:',v_fieldname,'|sum}"', v_crlf,
|
||||
' },', v_crlf);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
SELECT MIN(rowid) INTO v_imin FROM tmp_default3 WHERE rowid > v_imin;
|
||||
END WHILE;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_default3;
|
||||
|
||||
IF v_grid_footer_sum <> '' THEN
|
||||
SET v_grid_footer_sum = CONCAT(SUBSTRING(v_grid_footer_sum,1,LENGTH(v_grid_footer_sum)-3), v_crlf);
|
||||
|
||||
SET v_GridFooter_Sum = CONCAT(',', v_crlf,
|
||||
'"affixRow": [', v_crlf,
|
||||
v_grid_footer_sum,
|
||||
' ]', v_crlf);
|
||||
END IF;
|
||||
|
||||
-- 將傳入的 json 寫入暫存表方便處理
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'Sub_TableName',IFNULL(p_detail_table,''),NOW());
|
||||
-- MD 中 uuid template 的 d 檔暫存檔(目前先 hard code) Michael 20240319
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'Sub_TableName_x',REPLACE(IFNULL(p_detail_table,''),'_d','_x'),NOW());
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'Sub_pk',IFNULL(p_detail_key,''),NOW());
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'seqno',IFNULL(p_detail_sort_fieldname,''),NOW());
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'GridFooter_Sum',IFNULL(v_GridFooter_Sum,''),NOW());
|
||||
INSERT INTO zen_wizard_tmp (uuid,zen_key,zen_value,create_date) VALUES (p_uuid,'detail_fields',IFNULL(v_detail_fields,''),NOW());
|
||||
|
||||
-- Master-detail 的 detail
|
||||
IF SUBSTRING(p_code_id,1,12) = 'MasterDetail' THEN
|
||||
SET v_uuid_d = UUID();
|
||||
|
||||
-- v2: 將主要的 dataset 整理後寫入
|
||||
CALL zen_create_json_prepare_ds('D',v_uuid_d,p_FunctionTag);
|
||||
|
||||
-- v2: kernel compoment
|
||||
CALL zen_create_json_kernel(v_uuid_d,p_FunctionTag,p_detail_table,p_detail_key,p_query_type,p_code_id);
|
||||
|
||||
-- v2: 寫入暫存表的3個變數(部分參考 final 的寫法)
|
||||
CALL zen_create_json_detail(v_uuid_d,p_uuid,p_FunctionTag,p_code_id,p_detail_key);
|
||||
END IF;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user