中间表采集新增采集配置,实现可视化可控采集

This commit is contained in:
geht
2026-06-18 10:55:11 +08:00
parent 1c982052d3
commit 73a22b5ed9
29 changed files with 2602 additions and 27 deletions

View File

@@ -0,0 +1,73 @@
-- MES上辅机密炼动作秒级采集
-- 1. 通用中间表采集配置表可被密炼动作/报警/配方等多功能复用 biz_type 区分
-- 2. 密炼机动作维护表补全机台字段放开台账关联调整唯一键为(设备+动作代号)
-- 3. 密炼动作菜单下新增 启动采集/停止采集/采集设置 按钮权限
-- ===================== 1. 通用采集配置表 =====================
CREATE TABLE IF NOT EXISTS `mes_xsl_mcs_sync_config` (
`id` varchar(32) NOT NULL COMMENT '主键',
`biz_type` varchar(50) NOT NULL COMMENT '业务类型(采集任务唯一标识 MIX_ACT 密炼动作)',
`biz_name` varchar(100) DEFAULT NULL COMMENT '业务名称',
`source_table` varchar(100) DEFAULT NULL COMMENT '源中间表名',
`interval_seconds` int NOT NULL DEFAULT '1' COMMENT '采集时间间隔()默认1秒',
`status` varchar(1) NOT NULL DEFAULT '0' COMMENT '采集状态(0停止,1运行)',
`last_sync_time` datetime DEFAULT NULL COMMENT '最近一次采集时间',
`last_sync_result` varchar(500) DEFAULT NULL COMMENT '最近一次采集结果',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
`tenant_id` int DEFAULT '0' COMMENT '租户',
`create_by` varchar(100) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(100) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` int DEFAULT '0' COMMENT '删除标记(0正常,1删除)',
PRIMARY KEY (`id`),
KEY `idx_mscfg_biz` (`biz_type`, `tenant_id`, `del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES上辅机中间表采集配置(通用)';
-- 初始化密炼动作采集配置默认间隔1秒默认停止
INSERT INTO `mes_xsl_mcs_sync_config`
(`id`, `biz_type`, `biz_name`, `source_table`, `interval_seconds`, `status`, `remark`, `tenant_id`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`)
SELECT '1900000000000000860', 'MIX_ACT', '密炼机动作', 'MCSToMES_MixAct', 1, '0', '密炼机动作维护数据采集', 0, 'admin', NOW(), 'admin', NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `mes_xsl_mcs_sync_config` WHERE `biz_type` = 'MIX_ACT' AND `tenant_id` = 0);
-- ===================== 2. 密炼机动作维护表补全字段 =====================
-- 机台编号机台类型采集自中间表 EquipID/EquipType
ALTER TABLE `mes_xsl_mixer_action`
ADD COLUMN `equip_id` varchar(50) DEFAULT NULL COMMENT '机台编号(采集自中间表 EquipID)' AFTER `equipment_name`,
ADD COLUMN `equip_type` varchar(50) DEFAULT NULL COMMENT '机台类型(采集自中间表 EquipType)' AFTER `equip_id`;
-- 采集未匹配到台账时 equipment_id 允许为空
ALTER TABLE `mes_xsl_mixer_action`
MODIFY COLUMN `equipment_id` varchar(32) DEFAULT NULL COMMENT '设备台账ID(mes_xsl_equipment_ledger.id)采集未匹配时为空';
-- 唯一性改为(设备+动作代号)按机台编号+动作代号建索引便于采集 upsert
ALTER TABLE `mes_xsl_mixer_action`
ADD KEY `idx_mxma_equip_code` (`tenant_id`, `equip_id`, `action_code`, `del_flag`);
-- ===================== 3. 密炼动作菜单按钮权限 =====================
-- 父菜单密炼动作 1900000000000000835
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000861', '1900000000000000835', '启动采集', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:start', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000861');
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000862', '1900000000000000835', '停止采集', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:stop', '1', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000862');
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000863', '1900000000000000835', '采集设置', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:setting', '1', 3.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000863');
-- admin 角色授权
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
SELECT REPLACE(UUID(), '-', ''), r.id, p.id, NULL, NOW(), '127.0.0.1'
FROM `sys_role` r
JOIN (
SELECT id FROM `sys_permission`
WHERE id IN ('1900000000000000861','1900000000000000862','1900000000000000863')
) p ON 1 = 1
WHERE r.`role_code` = 'admin'
AND NOT EXISTS (
SELECT 1 FROM `sys_role_permission` rp
WHERE rp.`role_id` = r.id AND rp.`permission_id` = p.id
);

View File

@@ -0,0 +1,85 @@
-- MES上辅机采集配置通用表+字段映射中间库表 MES表配置驱动
-- 1. 扩展采集配置头目标表配置名称表注释
-- 2. 新建字段映射表 mes_xsl_mcs_sync_field
-- 3. 将密炼动作(MIX_ACT)改造为配置驱动补目标表+预置字段映射
-- 4. 新增"采集配置"菜单及按钮权限
-- ===================== 1. 采集配置头扩展 =====================
ALTER TABLE `mes_xsl_mcs_sync_config`
ADD COLUMN `config_name` varchar(100) DEFAULT NULL COMMENT '配置名称' AFTER `biz_type`,
ADD COLUMN `source_table_comment` varchar(200) DEFAULT NULL COMMENT '源中间表注释' AFTER `source_table`,
ADD COLUMN `target_table` varchar(100) DEFAULT NULL COMMENT 'MES目标表名' AFTER `source_table_comment`,
ADD COLUMN `target_table_comment` varchar(200) DEFAULT NULL COMMENT 'MES目标表注释' AFTER `target_table`;
-- 密炼动作改造为配置驱动
UPDATE `mes_xsl_mcs_sync_config`
SET `config_name` = '密炼机动作采集',
`source_table_comment` = '密炼机实时动作',
`target_table` = 'mes_xsl_mixer_action',
`target_table_comment` = 'MES密炼机动作维护'
WHERE `biz_type` = 'MIX_ACT';
-- ===================== 2. 字段映射表 =====================
CREATE TABLE IF NOT EXISTS `mes_xsl_mcs_sync_field` (
`id` varchar(32) NOT NULL COMMENT '主键',
`config_id` varchar(32) NOT NULL COMMENT '采集配置ID(mes_xsl_mcs_sync_config.id)',
`source_field` varchar(100) NOT NULL COMMENT '中间库源字段名',
`source_field_comment` varchar(200) DEFAULT NULL COMMENT '源字段注释',
`source_field_type` varchar(50) DEFAULT NULL COMMENT '源字段类型',
`target_field` varchar(100) DEFAULT NULL COMMENT 'MES目标字段名(接收字段)',
`target_field_comment` varchar(200) DEFAULT NULL COMMENT 'MES目标字段注释',
`match_key` varchar(1) DEFAULT '0' COMMENT '是否匹配键(0否,1是)作为Upsert唯一键',
`sort_no` int DEFAULT '0' COMMENT '排序',
`tenant_id` int DEFAULT '0' COMMENT '租户',
`create_by` varchar(100) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(100) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` int DEFAULT '0' COMMENT '删除标记(0正常,1删除)',
PRIMARY KEY (`id`),
KEY `idx_msf_config` (`config_id`, `del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MES上辅机采集字段映射';
-- 预置密炼动作字段映射EquipNameequipment_name 匹配键=机台编号+动作代号
INSERT INTO `mes_xsl_mcs_sync_field`
(`id`, `config_id`, `source_field`, `source_field_comment`, `source_field_type`, `target_field`, `target_field_comment`, `match_key`, `sort_no`, `tenant_id`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`)
SELECT * FROM (
SELECT '1900000000000000870' id, '1900000000000000860' config_id, 'EquipName' sf, '机台名称' sfc, 'nvarchar' sft, 'equipment_name' tf, '设备名称' tfc, '0' mk, 1 sn, 0 tid, 'admin' cb, NOW() ct, 'admin' ub, NOW() ut, 0 df
UNION ALL SELECT '1900000000000000871', '1900000000000000860', 'EquipID', '机台编号', 'varchar', 'equip_id', '机台编号', '1', 2, 0, 'admin', NOW(), 'admin', NOW(), 0
UNION ALL SELECT '1900000000000000872', '1900000000000000860', 'EquipType', '机台类型', 'nvarchar', 'equip_type', '机台类型', '0', 3, 0, 'admin', NOW(), 'admin', NOW(), 0
UNION ALL SELECT '1900000000000000873', '1900000000000000860', 'MixActName', '动作名称', 'nvarchar', 'action_name', '动作名称', '0', 4, 0, 'admin', NOW(), 'admin', NOW(), 0
UNION ALL SELECT '1900000000000000874', '1900000000000000860', 'MixActAddress', '动作地址', 'int', 'action_code', '动作代号', '1', 5, 0, 'admin', NOW(), 'admin', NOW(), 0
) t
WHERE NOT EXISTS (SELECT 1 FROM `mes_xsl_mcs_sync_field` WHERE `config_id` = '1900000000000000860');
-- ===================== 3. 采集配置菜单 + 按钮权限 =====================
-- 父菜单MES上辅机数据 1900000000000000830
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000865', '1900000000000000830', '采集配置', '/xslmesMcs/mcsSyncConfig', 'xslmesMcs/mcsSyncConfig/index', 1, NULL, NULL, 0, NULL, '0', 0.50, 0, 'ant-design:sync-outlined', 1, 1, 0, 0, '中间表MES表 采集配置与字段映射', 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000865');
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000866', '1900000000000000865', '新增', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:add', '1', 1.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000866');
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000867', '1900000000000000865', '编辑', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:edit', '1', 2.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000867');
INSERT INTO `sys_permission` (`id`, `parent_id`, `name`, `url`, `component`, `is_route`, `component_name`, `redirect`, `menu_type`, `perms`, `perms_type`, `sort_no`, `always_show`, `icon`, `is_leaf`, `keep_alive`, `hidden`, `hide_tab`, `description`, `create_by`, `create_time`, `update_by`, `update_time`, `del_flag`, `rule_flag`, `status`, `internal_or_external`)
SELECT '1900000000000000868', '1900000000000000865', '删除', NULL, NULL, 0, NULL, NULL, 2, 'xslmes:mcsSyncConfig:delete', '1', 3.00, 0, NULL, 1, 0, 0, 0, NULL, 'admin', NOW(), 'admin', NOW(), 0, 0, '1', 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_permission` WHERE `id` = '1900000000000000868');
-- admin 授权
INSERT INTO `sys_role_permission` (`id`, `role_id`, `permission_id`, `data_rule_ids`, `operate_date`, `operate_ip`)
SELECT REPLACE(UUID(), '-', ''), r.id, p.id, NULL, NOW(), '127.0.0.1'
FROM `sys_role` r
JOIN (
SELECT id FROM `sys_permission`
WHERE id IN ('1900000000000000865','1900000000000000866','1900000000000000867','1900000000000000868')
) p ON 1 = 1
WHERE r.`role_code` = 'admin'
AND NOT EXISTS (
SELECT 1 FROM `sys_role_permission` rp
WHERE rp.`role_id` = r.id AND rp.`permission_id` = p.id
);

View File

@@ -0,0 +1,10 @@
-- MES上辅机采集模式全量匹配/时间匹配/增量匹配应对中间库大表
ALTER TABLE `mes_xsl_mcs_sync_config`
ADD COLUMN `sync_mode` varchar(20) NOT NULL DEFAULT 'FULL' COMMENT '采集模式(FULL全量匹配,TIME时间匹配,INCR增量匹配)' AFTER `status`,
ADD COLUMN `incr_column` varchar(100) DEFAULT NULL COMMENT '增量/时间列(源表列名TIME/INCR模式用)' AFTER `sync_mode`,
ADD COLUMN `time_window` varchar(20) DEFAULT 'TODAY' COMMENT '时间范围(TODAY当天,LAST7最近七天)TIME模式用' AFTER `incr_column`,
ADD COLUMN `batch_limit` int DEFAULT '2000' COMMENT '每轮最大采集行数(INCR模式TOP N限流)' AFTER `time_window`,
ADD COLUMN `last_watermark` varchar(64) DEFAULT NULL COMMENT '增量采集已处理到的高水位(INCR模式自动维护)' AFTER `batch_limit`;
-- 密炼动作为小状态表保持全量匹配
UPDATE `mes_xsl_mcs_sync_config` SET `sync_mode` = 'FULL' WHERE `biz_type` = 'MIX_ACT';

View File

@@ -0,0 +1,4 @@
-- MES上辅机增量匹配改为标记位回写可视化采集条件 + 可配置回写值
ALTER TABLE `mes_xsl_mcs_sync_config`
ADD COLUMN `flag_condition` varchar(20) DEFAULT 'IS_NULL' COMMENT '增量标记采集条件(IS_NULL为空,EQ_EMPTY等于空串,NE_EMPTY不等于空串)' AFTER `last_watermark`,
ADD COLUMN `flag_write_value` varchar(64) DEFAULT '1' COMMENT '增量标记采集完成后回写值(默认1)' AFTER `flag_condition`;

View File

@@ -0,0 +1,3 @@
-- MES上辅机增量采集条件等于/不等于支持自定义匹配值留空时退化为空字符串
ALTER TABLE `mes_xsl_mcs_sync_config`
ADD COLUMN `flag_match_value` varchar(255) DEFAULT NULL COMMENT '增量标记采集条件比较值(EQ_EMPTY/NE_EMPTY用,留空表示空字符串)' AFTER `flag_condition`;