first commit
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
DELIMITER //
|
||||
|
||||
CREATE OR REPLACE PROCEDURE zen_create_json_prepare_ds(
|
||||
IN p_type VARCHAR(1), -- M:Master D:Detail
|
||||
IN p_uuid VARCHAR(100),
|
||||
IN p_FunctionTag VARCHAR(100)
|
||||
)
|
||||
/*
|
||||
功能 : amis Wizard 產生 json UI 核心程式的暫存檔
|
||||
描述:
|
||||
建立日期 : 2023/12/20
|
||||
|
||||
修改歷史
|
||||
項目 誰 日期 修改說明
|
||||
==== ========== ========== ================================================
|
||||
1 Michael 2023/12/20 根據 v1.0 重構
|
||||
*/
|
||||
BEGIN
|
||||
DECLARE v_imax INT;
|
||||
DECLARE v_imin INT;
|
||||
DECLARE v_imax_block INT;
|
||||
DECLARE v_y INT;
|
||||
DECLARE v_y1 INT;
|
||||
DECLARE v_y2 INT;
|
||||
DECLARE v_x INT;
|
||||
DECLARE v_x1 INT;
|
||||
DECLARE v_x2 INT;
|
||||
DECLARE v_g_max INT;
|
||||
DECLARE v_gx INT;
|
||||
DECLARE v_gy INT;
|
||||
DECLARE v_gy1 INT;
|
||||
DECLARE v_gy2 INT;
|
||||
|
||||
-- 建立臨時表儲存 jsondata
|
||||
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_json_data (
|
||||
fieldname VARCHAR(100),
|
||||
fieldcn VARCHAR(100),
|
||||
fieldwidth INT,
|
||||
fieldobject VARCHAR(100),
|
||||
fieldchecknull VARCHAR(10),
|
||||
picker_tag VARCHAR(100),
|
||||
fielddefault VARCHAR(200),
|
||||
fieldro VARCHAR(1),
|
||||
fieldfm VARCHAR(20),
|
||||
fieldblock SMALLINT,
|
||||
fieldds VARCHAR(10),
|
||||
fieldsh VARCHAR(10),
|
||||
cellno SMALLINT,
|
||||
cellx SMALLINT,
|
||||
celly SMALLINT,
|
||||
cellline SMALLINT,
|
||||
iscolumnmatch CHAR(1),
|
||||
visibleon VARCHAR(100),
|
||||
_group VARCHAR(10),
|
||||
_block VARCHAR(10),
|
||||
rowid INT AUTO_INCREMENT PRIMARY KEY
|
||||
);
|
||||
|
||||
TRUNCATE TABLE tmp_json_data;
|
||||
|
||||
-- 插入基本資料
|
||||
INSERT INTO tmp_json_data (
|
||||
fieldname, fieldcn, fieldwidth, fieldobject, fieldchecknull, picker_tag,
|
||||
fielddefault, fieldro, fieldfm,
|
||||
fieldblock, fieldds, fieldsh, cellno, cellx, celly, cellline, iscolumnmatch, visibleon
|
||||
)
|
||||
SELECT
|
||||
fieldname, fieldcn, fieldwidth, fieldobject, fieldchecknull, picker_tag,
|
||||
fielddefault, fieldro, fieldfm,
|
||||
fieldblock, fieldds, fieldsh, cellno, cellx, celly, cellline, IFNULL(iscolumnmatch,'N'), visibleon
|
||||
FROM zen_fields
|
||||
WHERE functiontag = p_FunctionTag
|
||||
AND ((p_type = 'M' AND fieldblock < 90) OR (p_type = 'D' AND fieldblock >= 90))
|
||||
ORDER BY fieldblock, celly, cellx;
|
||||
|
||||
-- 計算 _block (body-panels or tabs) 排列
|
||||
SELECT MAX(fieldblock) INTO v_imax FROM tmp_json_data;
|
||||
SELECT MIN(fieldblock) INTO v_imin FROM tmp_json_data;
|
||||
SET v_y = 0;
|
||||
SET v_imax_block = v_imax;
|
||||
|
||||
WHILE v_y <= v_imax DO
|
||||
SELECT COUNT(*) INTO v_x FROM tmp_json_data WHERE fieldblock = v_y AND fieldsh = 'Y';
|
||||
|
||||
IF v_x > 1 AND v_imax > v_imin THEN
|
||||
-- 找出區塊的開始和結束位置
|
||||
SELECT MIN(celly) INTO v_y1 FROM tmp_json_data WHERE fieldblock = v_y AND fieldsh = 'Y';
|
||||
SELECT MIN(cellx) INTO v_x1 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_y1 AND fieldsh = 'Y';
|
||||
SELECT rowid INTO v_y1 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_y1 AND cellx=v_x1 AND fieldsh = 'Y';
|
||||
|
||||
SELECT MAX(celly) INTO v_y2 FROM tmp_json_data WHERE fieldblock = v_y AND fieldsh = 'Y';
|
||||
SELECT MAX(cellx) INTO v_x2 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_y2 AND fieldsh = 'Y';
|
||||
SELECT rowid INTO v_y2 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_y2 AND cellx=v_x2 AND fieldsh = 'Y';
|
||||
|
||||
-- 更新區塊標記
|
||||
UPDATE tmp_json_data SET _block='BH' WHERE rowid=v_y1;
|
||||
UPDATE tmp_json_data SET _block='BF' WHERE rowid=v_y2;
|
||||
END IF;
|
||||
|
||||
-- 針對 Image 特別處理(BA -- Header/Footer All)
|
||||
SELECT COUNT(*) INTO v_x FROM tmp_json_data WHERE fieldblock = v_y AND fieldobject = 'input-image' AND fieldsh = 'Y';
|
||||
IF v_x = 1 THEN
|
||||
UPDATE tmp_json_data SET _block='BA' WHERE fieldblock = v_y AND fieldsh = 'Y';
|
||||
END IF;
|
||||
|
||||
-- 計算 _group (body-group) 排列
|
||||
SELECT MAX(celly) INTO v_g_max FROM tmp_json_data WHERE fieldblock = v_y AND fieldsh = 'Y';
|
||||
SET v_gy = 1;
|
||||
|
||||
WHILE v_gy <= v_g_max DO
|
||||
SELECT COUNT(*) INTO v_gx FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_gy AND fieldsh = 'Y';
|
||||
|
||||
IF v_gx > 1 THEN
|
||||
-- 找出群組的開始和結束位置
|
||||
SELECT MIN(cellx) INTO v_gy1 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_gy AND fieldsh = 'Y';
|
||||
SELECT MIN(rowid) INTO v_gy1 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_gy AND cellx=v_gy1 AND fieldsh = 'Y';
|
||||
|
||||
SELECT MAX(cellx) INTO v_gy2 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_gy AND fieldsh = 'Y';
|
||||
SELECT MAX(rowid) INTO v_gy2 FROM tmp_json_data WHERE fieldblock = v_y AND celly = v_gy AND cellx=v_gy2 AND fieldsh = 'Y';
|
||||
|
||||
-- 更新群組標記
|
||||
UPDATE tmp_json_data SET _group='GH' WHERE rowid=v_gy1;
|
||||
UPDATE tmp_json_data SET _group='GF' WHERE rowid=v_gy2;
|
||||
END IF;
|
||||
|
||||
SET v_gy = v_gy + 1;
|
||||
END WHILE;
|
||||
|
||||
SET v_y = v_y + 1;
|
||||
END WHILE;
|
||||
|
||||
-- 寫入暫存檔
|
||||
INSERT INTO zen_wizard_jsondata (
|
||||
uuid, fieldname, fieldcn, fieldwidth, fieldobject, fieldchecknull, picker_tag,
|
||||
fielddefault, fieldro, fieldfm, fieldblock, fieldds, fieldsh, cellno, cellx, celly, cellline,
|
||||
iscolumnmatch, visibleon, _group, _block, json_bh, json_gh, json_insert, json_update,
|
||||
json_quickedit, json_gridview, json_view, json_gf, json_bf, create_date
|
||||
)
|
||||
SELECT
|
||||
p_uuid, fieldname, fieldcn, fieldwidth, fieldobject, fieldchecknull, picker_tag,
|
||||
fielddefault, fieldro, fieldfm, fieldblock, fieldds, fieldsh, cellno, cellx, celly, cellline,
|
||||
iscolumnmatch, visibleon, _group, _block, '', '', '', '', '', '', '', '', '', NOW()
|
||||
FROM tmp_json_data;
|
||||
|
||||
DROP TEMPORARY TABLE IF EXISTS tmp_json_data;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user