Browse Source

Merge branch 'dev-lml' of http://124.222.6.97:3000/sunquan/apelet_tenant into feature/tenant-sync-online

feature/tenant-sync-online
chenchuchuan 2 days ago
parent
commit
cf1770348f
  1. 380
      zz-resource/db-scripts/botp-rule-kernel-tables-script.sql

380
zz-resource/db-scripts/botp-rule-kernel-tables-script.sql

@ -0,0 +1,380 @@ @@ -0,0 +1,380 @@
-- ----------------------------
-- BOTP 业务规则内核:10 张表的完整建表语句(建库用)
--
-- 用途:
-- 1) 全新环境建库:直接执行本脚本即得到 BOTP 的完整表结构;
-- 2) 存量环境结构比对:本脚本是「应然结构」,与线上 SHOW CREATE TABLE 比对可发现缺列。
--
-- ⚠ 存量环境不要直接执行本脚本:
-- - 本脚本不带 IF NOT EXISTS,表已存在会报错(不会覆盖数据,但会中断后续语句);
-- - 存量环境请按顺序执行增量脚本:
-- ① botp-reverse-writing-tables-script.sql (反写三表,表不存在则建)
-- ② botp-rule-version-script.sql (rule_version + 两张快照表)
-- ③ convert-relation-entry-writeback-script.sql(convert_relation_entry 两列)
-- ④ botp-rule-columns-script.sql (其余 11 列 + 2 个索引)
-- ⑤ botp-migration-data-script.sql (存量数据兜底 + 插件回填,会改数据,先备份)
-- ⑥ closed_flag 补列(见升级说明 §1.6,仓库内无脚本,需逐表 ALTER)
--
-- 涉及 10 张表:
-- convert_rule / convert_fieldmapping_entry / convert_plugin_entry
-- convert_relation / convert_relation_entry
-- reverse_writing_rules / reverse_writing_formula / reverse_writing_business
-- convert_rule_ver / reverse_writing_rules_ver
--
-- 执行位置:tenant-admin 服务指向的默认数据库。多租户部署时每个租户库都要执行。
-- 建表顺序:无外键依赖,可任意顺序;表间关系靠 parent_id / rules_id / rule_id 逻辑关联。
--
-- 关于列类型(与实体逐项核对过,详见升级说明 §1.3):
-- - 枚举编码一律 varchar 存数字字符串('1'/'2'/'3'),不是 int;
-- - convert_rule.enabled 是 String、convert_plugin_entry.serial_number 是 String(按字符串排序);
-- - convert_fieldmapping_entry.serial_number 是 Integer(int,默认 10);
-- - reverse_writing_*.enable 是 int,与历史口径一致,勿改成 varchar;
-- - reverse_writing_rules.rollback_on_revoke 是 Integer(tinyint),不是 Boolean;
-- - convert_relation.source_id / target_id 是 varchar,不是 bigint;
-- - convert_relation_entry 的列名是 targe_entry_*(少一个 t,是实体既有拼写,勿改);
-- - 审计四列来自 BaseModel;反写三表与 convert_relation 的 create_user_id / create_time 为 NOT NULL。
--
-- 回滚段:文件末尾。
-- ----------------------------
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ============================================================================
-- 一、规则配置表
-- ============================================================================
-- ----------------------------
-- 1. 转换规则主表
-- source_entity_id / target_entity_id 存 OnlFormHead.id(单元数据主键),不是表名
-- auto_save:'1' 或 'true' 视为开(下推即落库),空值与其它值视为关(前端手动保存)
-- split_merge_strategy:1 一对一 / 2 多对一 / 3 按规则分组合并
-- group_by_field 存源单字段 OnlFormField.id;group_by_field_name 仅展示,执行侧不读
-- enable_condition_json / select_filter_json 留空(NULL)表示不限制;空串会被当成「配了但解析失败」
-- ----------------------------
CREATE TABLE `convert_rule` (
`id` bigint(20) NOT NULL COMMENT '主键',
`deleted_flag` int(11) DEFAULT '1' COMMENT '逻辑删除标记(1:正常 -1:已删除)',
`number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '规则编码',
`name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '规则名称',
`source_entity_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单(OnlFormHead.id)',
`source_table` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单表名',
`target_entity_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单(OnlFormHead.id)',
`enabled` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '启动状态(1:启用)',
`is_default` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '是否默认',
`auto_save` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '下推自动保存(1/true:是 其它或空:否)',
`visible` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '运行时可见',
`up_interface_type` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '上游界面类型',
`down_interface_type` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '下游界面类型',
`up_route_interface` bigint(20) DEFAULT NULL COMMENT '上游路由界面(xy_sys_menu.id)',
`down_route_interface` bigint(20) DEFAULT NULL COMMENT '下游路由界面(xy_sys_menu.id)',
`up_list_interface` bigint(20) DEFAULT NULL COMMENT '上游在线列表界面(OnlineForm.id)',
`up_edit_interface` bigint(20) DEFAULT NULL COMMENT '上游在线编辑界面(OnlineForm.id)',
`down_list_interface` bigint(20) DEFAULT NULL COMMENT '下游在线列表界面(OnlineForm.id)',
`down_edit_interface` bigint(20) DEFAULT NULL COMMENT '下游在线编辑界面(OnlineForm.id)',
`split_merge_strategy` varchar(10) COLLATE utf8mb4_bin NOT NULL DEFAULT '1' COMMENT '分单策略(1:一对一 2:多对一 3:按规则分组合并)',
`group_by_field` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '分单字段(源单OnlFormField.id;策略为3时必填)',
`group_by_field_name` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '分单字段名称(仅展示)',
`enable_condition_json` text COLLATE utf8mb4_bin COMMENT '规则启用条件JSON;留空表示始终启用',
`select_filter_json` text COLLATE utf8mb4_bin COMMENT '选单过滤JSON;留空表示全部通过;下推与拉式共用',
`rule_version` int(11) NOT NULL DEFAULT '1' COMMENT '规则版本号(@Version乐观锁)',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_convert_rule_number` (`number`) USING BTREE,
KEY `idx_convert_rule_target` (`target_entity_id`) USING BTREE,
KEY `idx_convert_rule_source` (`source_entity_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='转换规则存值主表';
-- ----------------------------
-- 2. 字段映射分录
-- parent_id 指向 convert_rule.id
-- value_method:1 源单字段 / 2 常量 / 3 计算公式 / 4 按条件取值
-- calculation_json:以 { 开头是计算公式对象(valueMethod=3),以 [ 开头是条件分支数组(valueMethod=4)
-- merge_method:1 直接取 / 2 求和 / 3 拼接(仅策略 2/3 且有合并场景时生效)
-- entry_target 存目标单据 OnlFormHead.id(与 target_entity_id 同口径),单分录时可留空
-- serial_number 参与「是否同一映射」判定,使同一目标字段的多条映射不再互相覆盖
-- ----------------------------
CREATE TABLE `convert_fieldmapping_entry` (
`id` bigint(20) NOT NULL COMMENT '主键',
`deleted_flag` int(11) DEFAULT '1' COMMENT '逻辑删除标记(1:正常 -1:已删除)',
`oldfield_number` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单字段(OnlFormField.id)',
`oldfield_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单字段名称',
`newfield_number` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单字段(OnlFormField.id)',
`newfield_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单字段名称',
`calculation` text COLLATE utf8mb4_bin COMMENT '计算公式(原文)',
`calculation_json` text COLLATE utf8mb4_bin COMMENT '取值方式3:计算公式对象{...} 取值方式4:条件分支数组[...]',
`value_method` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '取值方式(1:源单字段 2:常量 3:计算公式 4:按条件取值)',
`clt_value` varchar(500) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '常量值/未命中分支时的兜底取值',
`parent_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '所属转换规则(convert_rule.id)',
`merge_method` varchar(10) COLLATE utf8mb4_bin NOT NULL DEFAULT '1' COMMENT '合并方式(1:直接取 2:求和 3:拼接)',
`entry_target` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标分录(目标单据OnlFormHead.id)',
`serial_number` int(11) DEFAULT '10' COMMENT '执行顺序;数字越小越先执行',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_fieldmapping_parent` (`parent_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='转换规则-字段映射分录';
-- ----------------------------
-- 3. 插件分录(转换插件与反写插件共用本表,靠 type 区分)
-- parent_id:type=convert 时指向 convert_rule.id;type=writeback 时指向 reverse_writing_rules.id
-- commen:插件参数「键=列名,键=列名」。原先写死在 Java 里的表名/字段名改从这里取,
-- 升级后必须由 botp-migration-data-script.sql 回填,否则插件取不到字段而静默失效
-- serial_number:注意是 varchar 不是 int,按字符串排序(实体 ConvertPluginEntry 即 String)
-- ----------------------------
CREATE TABLE `convert_plugin_entry` (
`id` bigint(20) NOT NULL COMMENT '主键',
`deleted_flag` int(11) DEFAULT '1' COMMENT '逻辑删除标记(1:正常 -1:已删除)',
`enable` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '是否启用(true/1:是)',
`type` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '插件类型(convert:转换 writeback:反写)',
`class_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '插件类全限定名',
`plugin_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '插件名称',
`commen` varchar(500) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '插件参数(键=列名,键=列名);原先硬编码的字段名从这里取',
`serial_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '执行顺序(注意:实体是String不是Integer)',
`parent_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '所属规则(转换规则id或反写规则id,由type区分)',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_plugin_parent` (`parent_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='规则插件分录(转换/反写共用)';
-- ----------------------------
-- 4. 反写规则主表
-- source_documents / target_doc 存 OnlFormHead.id(单元数据主键),不是表名
-- trigger_timing:1 保存即反写 / 2 审核即反写
-- enable:1 启用 / 0 停用(int,与历史口径一致,勿改成 varchar)
-- rollback_on_revoke:1 开 / 0 关(Integer),空值按「开启」处理
-- source_close_json 成立时写源单主表 closed_flag=1,不成立写 0(整单关闭语义)
-- ----------------------------
CREATE TABLE `reverse_writing_rules` (
`id` bigint(20) NOT NULL COMMENT '主键Id',
`name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '规则名称',
`source_documents` bigint(20) DEFAULT NULL COMMENT '来源单据(OnlFormHead.id)',
`target_doc` bigint(20) DEFAULT NULL COMMENT '目标单据(OnlFormHead.id)',
`trigger_timing` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '触发时机(1:保存即反写 2:审核即反写)',
`enable` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用(1:是 0:否)',
`excess_check_json` text COLLATE utf8mb4_bin COMMENT '超额检查JSON;留空表示不检查',
`excess_action` varchar(10) COLLATE utf8mb4_bin NOT NULL DEFAULT '1' COMMENT '超额动作(1:拦截报错 2:仅告警)',
`source_close_json` text COLLATE utf8mb4_bin COMMENT '源单关闭条件JSON;留空表示不关闭',
`rollback_on_revoke` tinyint(1) NOT NULL DEFAULT '1' COMMENT '撤销回滚(1:是 0:否)',
`rule_version` int(11) NOT NULL DEFAULT '1' COMMENT '规则版本号(@Version乐观锁)',
`create_user_id` bigint(20) NOT NULL COMMENT '创建者Id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_target_doc` (`target_doc`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='反写规则配置主表';
-- ----------------------------
-- 5. 反写公式分录
-- rules_id 指向 reverse_writing_rules.id
-- condition / formula 等列名是 MySQL 保留字,必须加反引号(实体已用 @TableField("`condition`"))
-- formula / formula_english = 回写位置(源单);source_single_field = 取值位置(目标单)
-- ⚠ 方向与直觉相反,配反了表现为「反写执行了但源单没变」
-- mode:1 累加 / 2 扣减 / 3 覆盖(覆盖方式会把原值记到 convert_relation_entry.before_value)
-- exec_order:Integer,数字越小越先执行
-- *_text / *_english / *_field 是展示镜像列,前端需与 *_json 同步写入,不要只写 JSON
-- ----------------------------
CREATE TABLE `reverse_writing_formula` (
`id` bigint(20) NOT NULL COMMENT '主键Id',
`rules_id` bigint(20) NOT NULL COMMENT '反写规则Id(reverse_writing_rules.id)',
`condition` text COLLATE utf8mb4_bin COMMENT '条件(原始)',
`condition_text` text COLLATE utf8mb4_bin COMMENT '条件(展示文本)',
`condition_english` text COLLATE utf8mb4_bin COMMENT '条件(英文表达式)',
`condition_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '条件字段',
`condition_json` text COLLATE utf8mb4_bin COMMENT '条件JSON(运行时只读这一列)',
`formula` text COLLATE utf8mb4_bin COMMENT '反写公式(回写位置;指向源单)',
`formula_text` text COLLATE utf8mb4_bin COMMENT '反写公式(展示文本)',
`formula_english` text COLLATE utf8mb4_bin COMMENT '反写公式(英文表达式;指向源单字段)',
`formula_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '反写公式字段',
`formula_json` text COLLATE utf8mb4_bin COMMENT '反写公式JSON(运行时只读这一列)',
`mode` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '反写方式(1:累加 2:扣减 3:覆盖)',
`source_single_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单字段(取值位置;实际指向目标单字段)',
`source_single_field_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单字段名称',
`enable` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用(1:是 0:否)',
`exec_order` int(11) DEFAULT '10' COMMENT '执行顺序;数字越小越先执行',
`create_user_id` bigint(20) NOT NULL COMMENT '创建者Id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_rules_id` (`rules_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='反写规则-反写公式分录';
-- ----------------------------
-- 6. 业务规则分录
-- preconditions / established / not_established 三组:前置条件、条件成立、条件不成立
-- 前置条件为空时按「成立」分支处理;两个分支都真实写入并持久化
-- 本表没有 exec_order:业务规则按返回顺序执行,本次不新增
-- ----------------------------
CREATE TABLE `reverse_writing_business` (
`id` bigint(20) NOT NULL COMMENT '主键Id',
`rules_id` bigint(20) NOT NULL COMMENT '反写规则Id(reverse_writing_rules.id)',
`preconditions` text COLLATE utf8mb4_bin COMMENT '前置条件(原始)',
`preconditions_text` text COLLATE utf8mb4_bin COMMENT '前置条件(展示文本)',
`preconditions_english` text COLLATE utf8mb4_bin COMMENT '前置条件(英文表达式)',
`preconditions_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '前置条件字段',
`preconditions_json` text COLLATE utf8mb4_bin COMMENT '前置条件JSON(运行时只读这一列)',
`established` text COLLATE utf8mb4_bin COMMENT '条件成立(原始)',
`established_text` text COLLATE utf8mb4_bin COMMENT '条件成立(展示文本)',
`established_english` text COLLATE utf8mb4_bin COMMENT '条件成立(英文表达式)',
`established_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '条件成立字段',
`established_json` text COLLATE utf8mb4_bin COMMENT '条件成立JSON(运行时只读这一列)',
`not_established` text COLLATE utf8mb4_bin COMMENT '条件不成立(原始)',
`not_established_text` text COLLATE utf8mb4_bin COMMENT '条件不成立(展示文本)',
`not_established_english` text COLLATE utf8mb4_bin COMMENT '条件不成立(英文表达式)',
`not_established_field` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '条件不成立字段',
`not_established_json` text COLLATE utf8mb4_bin COMMENT '条件不成立JSON(运行时只读这一列)',
`enable` int(11) NOT NULL DEFAULT '1' COMMENT '是否启用(1:是 0:否)',
`create_user_id` bigint(20) NOT NULL COMMENT '创建者Id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_rules_id` (`rules_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='反写规则-业务规则分录';
-- ============================================================================
-- 二、转换关系表(反写定位源单的权威依据)
-- ============================================================================
-- ----------------------------
-- 7. 转换关系(单据级)
-- target_number 实际存的是目标单的 OnlFormHead.id(不是表名),与 target_id 组成组合索引
-- rule_version:本次转换实际使用的规则版本,供事后回溯
-- ----------------------------
CREATE TABLE `convert_relation` (
`id` bigint(20) NOT NULL COMMENT '主键',
`convert_rule_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '转换规则id',
`source_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单表名',
`source_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单id',
`target_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单表名/OnlFormHead.id',
`target_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单id',
`rule_version` int(11) DEFAULT NULL COMMENT '本次转换实际使用的规则版本',
`create_user_id` bigint(20) NOT NULL COMMENT '创建者Id',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_relation_target` (`target_number`, `target_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='转换关系(单据级)';
-- ----------------------------
-- 8. 转换关系(分录行级)
-- ⚠ 列名是 targe_entry_number / targe_entry_id(少一个 t,不是 target_entry_*),
-- 这是实体 ConvertRelationEntry 的既有拼写,建表必须照抄,改了代码就找不到列
-- before_value:反写前的源单字段原值,只有「覆盖」方式需要(累加/扣减天然可逆)
-- writeback_rule_version:本次反写实际使用的规则版本,撤销时按同一版本取快照执行
-- ----------------------------
CREATE TABLE `convert_relation_entry` (
`id` bigint(20) NOT NULL COMMENT '主键',
`convert_rule_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '转换规则id',
`source_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单表名',
`source_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源单id',
`source_entry_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源分录表名',
`source_entry_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '源分录行id',
`target_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单表名',
`target_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标单id',
`targe_entry_number` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标分录表名(列名少一个t,是实体既有拼写)',
`targe_entry_id` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '目标分录行id(列名少一个t,是实体既有拼写)',
`before_value` decimal(24,8) DEFAULT NULL COMMENT '反写前的源单字段原值(仅覆盖方式),供撤销回滚恢复',
`writeback_rule_version` int(11) DEFAULT NULL COMMENT '本次反写使用的反写规则版本,撤销时按同一版本执行',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_relation_entry_target` (`target_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='转换关系(分录行级)';
-- ============================================================================
-- 三、规则版本快照表
-- 每次保存规则时版本号 +1 并追加一条全量快照,快照以 JSON 内联存储规则主表 + 全部子表分录
-- 唯一索引 (rule_id, rule_version) 保证版本号单调且不重复
-- remark 只有两个值:新增保存 / 修改保存
-- ============================================================================
-- ----------------------------
-- 9. 转换规则版本快照
-- snapshot_json 分区:rule / fieldMappings / pluginEntries
-- ----------------------------
CREATE TABLE `convert_rule_ver` (
`id` bigint(20) NOT NULL COMMENT '主键',
`rule_id` bigint(20) NOT NULL COMMENT '所属转换规则Id(convert_rule.id)',
`rule_version` int(11) NOT NULL COMMENT '规则版本号',
`snapshot_json` longtext COLLATE utf8mb4_bin COMMENT '全量快照JSON:rule/fieldMappings/pluginEntries',
`remark` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注(新增保存/修改保存)',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_convert_rule_ver_rule_version` (`rule_id`, `rule_version`) USING BTREE,
KEY `idx_convert_rule_ver_rule_id` (`rule_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='转换规则版本快照';
-- ----------------------------
-- 10. 反写规则版本快照
-- snapshot_json 分区:rule / formulas / businesses
-- 撤销/弃审回滚时按 convert_relation_entry.writeback_rule_version 到本表取当时的快照执行
-- ----------------------------
CREATE TABLE `reverse_writing_rules_ver` (
`id` bigint(20) NOT NULL COMMENT '主键',
`rule_id` bigint(20) NOT NULL COMMENT '所属反写规则Id(reverse_writing_rules.id)',
`rule_version` int(11) NOT NULL COMMENT '规则版本号',
`snapshot_json` longtext COLLATE utf8mb4_bin COMMENT '全量快照JSON:rule/formulas/businesses',
`remark` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注(新增保存/修改保存)',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建者Id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_user_id` bigint(20) DEFAULT NULL COMMENT '更新者Id',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_reverse_writing_rules_ver_rule_version` (`rule_id`, `rule_version`) USING BTREE,
KEY `idx_reverse_writing_rules_ver_rule_id` (`rule_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='反写规则版本快照';
SET FOREIGN_KEY_CHECKS = 1;
-- ============================================================================
-- 建后自检:应返回 10 行,每行一张表
-- ============================================================================
SELECT e.table_name, IF(c.table_name IS NULL, '缺失', '已建') AS status
FROM (
SELECT 'convert_rule' AS table_name
UNION ALL SELECT 'convert_fieldmapping_entry'
UNION ALL SELECT 'convert_plugin_entry'
UNION ALL SELECT 'reverse_writing_rules'
UNION ALL SELECT 'reverse_writing_formula'
UNION ALL SELECT 'reverse_writing_business'
UNION ALL SELECT 'convert_relation'
UNION ALL SELECT 'convert_relation_entry'
UNION ALL SELECT 'convert_rule_ver'
UNION ALL SELECT 'reverse_writing_rules_ver'
) e
LEFT JOIN information_schema.tables c
ON c.table_schema = DATABASE() AND c.table_name = e.table_name;
-- ----------------------------
-- 回滚段(仅在确认 10 张表都是本次新建、且无业务数据时使用)。
-- 有存量数据时禁止直接 DROP:规则配置与转换关系会一起丢失,应先导出。
-- 注意:convert_plugin_entry 的反写插件分录(type=writeback)也一并丢失。
-- ----------------------------
-- SET FOREIGN_KEY_CHECKS = 0;
-- DROP TABLE IF EXISTS `reverse_writing_rules_ver`;
-- DROP TABLE IF EXISTS `convert_rule_ver`;
-- DROP TABLE IF EXISTS `convert_relation_entry`;
-- DROP TABLE IF EXISTS `convert_relation`;
-- DROP TABLE IF EXISTS `reverse_writing_business`;
-- DROP TABLE IF EXISTS `reverse_writing_formula`;
-- DROP TABLE IF EXISTS `reverse_writing_rules`;
-- DROP TABLE IF EXISTS `convert_plugin_entry`;
-- DROP TABLE IF EXISTS `convert_fieldmapping_entry`;
-- DROP TABLE IF EXISTS `convert_rule`;
-- SET FOREIGN_KEY_CHECKS = 1;
Loading…
Cancel
Save