Files
zkxw/待同步到生产的sql脚本
T
2026-07-21 15:23:59 +08:00

424 lines
21 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- OA 审批(钉钉交互)增量脚本 — 2026-07-14
-- 执行前请备份;可重复执行时注意 IGNORE 语义(部分语句非幂等)
-- ---------------------------------------------------------------------------
-- 1. 组织字段:直属主管 / 部门负责人用户 ID
-- ---------------------------------------------------------------------------
ALTER TABLE sys_user
ADD COLUMN supervisor_user_id VARCHAR(64) NULL COMMENT '直属主管用户ID' AFTER dept_id;
ALTER TABLE sys_dept
ADD COLUMN leader_user_id VARCHAR(64) NULL COMMENT '部门负责人用户ID' AFTER status;
-- ---------------------------------------------------------------------------
-- 2. OA 审批核心表
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS oa_app_group (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
group_name VARCHAR(100) NOT NULL COMMENT '分组名称',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_app_group_tenant (tenant_no, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批分组';
CREATE TABLE IF NOT EXISTS oa_app (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
group_id VARCHAR(64) NULL COMMENT '分组ID',
app_name VARCHAR(50) NOT NULL COMMENT '表单/应用名称',
icon_url VARCHAR(512) NULL COMMENT '图标',
description VARCHAR(100) NULL COMMENT '表单说明',
initiator_scope VARCHAR(32) NOT NULL DEFAULT 'all' COMMENT '发起范围 all/users',
initiator_user_ids TEXT NULL COMMENT '指定发起人JSON数组',
admin_scope VARCHAR(32) NOT NULL DEFAULT 'all_oa_admin' COMMENT '管理员范围',
admin_user_ids TEXT NULL COMMENT '指定管理员JSON数组',
status CHAR(1) NOT NULL DEFAULT '1' COMMENT '1启用 0停用',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_app_tenant (tenant_no, del_flag),
KEY idx_oa_app_group (group_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批应用';
CREATE TABLE IF NOT EXISTS oa_app_version (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
app_id VARCHAR(64) NOT NULL COMMENT '应用ID',
version_no INT NOT NULL COMMENT '版本号',
status VARCHAR(16) NOT NULL DEFAULT 'draft' COMMENT 'draft/published',
is_latest_published CHAR(1) NOT NULL DEFAULT '0' COMMENT '是否最新已发布',
form_schema_json LONGTEXT NULL COMMENT '表单Schema JSON',
flow_tree_json LONGTEXT NULL COMMENT '流程树 JSON',
advanced_settings_json TEXT NULL COMMENT '高级设置 JSON',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_app_ver_app (app_id, status, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批应用版本';
CREATE TABLE IF NOT EXISTS oa_role (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
role_name VARCHAR(100) NOT NULL COMMENT '角色名称',
role_code VARCHAR(64) NOT NULL COMMENT '角色编码',
role_kind VARCHAR(16) NOT NULL DEFAULT 'custom' COMMENT 'custom/preset',
status CHAR(1) NOT NULL DEFAULT '1' COMMENT '1启用 0停用',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
UNIQUE KEY uk_oa_role_tenant_code (tenant_no, role_code, del_flag),
KEY idx_oa_role_tenant (tenant_no, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA工作流角色';
CREATE TABLE IF NOT EXISTS oa_role_user (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
oa_role_id VARCHAR(64) NOT NULL COMMENT '工作流角色ID',
user_id VARCHAR(64) NOT NULL COMMENT '用户ID',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_role_user_role (oa_role_id, del_flag),
KEY idx_oa_role_user_user (user_id, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA工作流角色成员';
CREATE TABLE IF NOT EXISTS oa_instance (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
app_id VARCHAR(64) NOT NULL COMMENT '应用ID',
app_version_id VARCHAR(64) NOT NULL COMMENT '锁定的已发布版本ID',
title VARCHAR(200) NULL COMMENT '实例标题',
initiator_user_id VARCHAR(64) NOT NULL COMMENT '发起人',
initiator_dept_id VARCHAR(64) NULL COMMENT '发起人部门',
form_data_json LONGTEXT NULL COMMENT '表单数据 JSON',
status VARCHAR(32) NOT NULL DEFAULT 'running' COMMENT 'running/completed/rejected/cancelled',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_inst_tenant (tenant_no, del_flag),
KEY idx_oa_inst_initiator (initiator_user_id, status),
KEY idx_oa_inst_app (app_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批实例';
CREATE TABLE IF NOT EXISTS oa_task (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
instance_id VARCHAR(64) NOT NULL COMMENT '实例ID',
node_key VARCHAR(64) NULL COMMENT '节点key',
node_name VARCHAR(200) NULL COMMENT '节点名称',
task_type VARCHAR(16) NOT NULL DEFAULT 'approval' COMMENT 'approval/cc',
assignee_user_id VARCHAR(64) NOT NULL COMMENT '处理人',
status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending/approved/rejected/done',
comment_text VARCHAR(512) NULL COMMENT '意见',
resolve_source VARCHAR(64) NULL COMMENT '解析来源如 supervisor_fallback_dept_leader',
sign_mode VARCHAR(8) NULL COMMENT 'or/and',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_task_assignee (assignee_user_id, status, del_flag),
KEY idx_oa_task_instance (instance_id, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA审批任务';
CREATE TABLE IF NOT EXISTS oa_relation (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
from_instance_id VARCHAR(64) NOT NULL COMMENT '本实例ID',
to_instance_id VARCHAR(64) NOT NULL COMMENT '被关联实例ID',
field_key VARCHAR(64) NULL COMMENT '表单字段key',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_rel_from (from_instance_id, del_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA关联审批';
-- 预置工作流角色(按租户手工或应用启动 ensure;此处示例 zkxw)
-- INSERT 由后端 ensure_presets 幂等完成,避免 UUID 硬编码冲突
-- ---------------------------------------------------------------------------
-- 3. 菜单说明
-- ---------------------------------------------------------------------------
-- 侧栏路由已写入:
-- - web-admin/src/router/modules/sqxp.ts
-- - backend/app/api/menu.py(STATIC_MENU_TREE)
-- 角色权限用的 sys_menu 注册见:
-- docs/sql/patch_2026-07-15_oa_approval_sys_menu.sql
-- (含 OA审批 节点插入,以及旧「工作流管理」伪删除)
-- =============================================================================
-- OA 审批菜单注册 + 旧「工作流管理」伪删除
-- 日期:2026-07-15
-- 说明:
-- 1. 在「系统管理」顶级(TOP...00005)下注册「OA审批」及三级页面菜单,
-- id / path / component / perms 与 web-admin sqxp.ts、backend menu.py 对齐。
-- 2. 伪删除旧「工作流管理」二级及其三级菜单(OA 已替代),并清理角色菜单关联。
-- =============================================================================
SET NAMES utf8mb4;
-- ---------------------------------------------------------------------------
-- 1. 伪删除旧「工作流管理」及其子菜单
-- ---------------------------------------------------------------------------
UPDATE `sys_menu`
SET `del_flag` = 1,
`update_time` = NOW()
WHERE `del_flag` = 0
AND (
`id` = 'WKF00000000000000000000000000001'
OR `parent_id` = 'WKF00000000000000000000000000001'
OR `id` IN (
'10000000000000000000000000000wf01',
'10000000000000000000000000000wf02',
'10000000000000000000000000000wf03',
'10000000000000000000000000000wf04',
'10000000000000000000000000000wf05'
)
);
DELETE FROM `sys_role_menu`
WHERE `menu_id` IN (
'WKF00000000000000000000000000001',
'10000000000000000000000000000wf01',
'10000000000000000000000000000wf02',
'10000000000000000000000000000wf03',
'10000000000000000000000000000wf04',
'10000000000000000000000000000wf05'
);
-- ---------------------------------------------------------------------------
-- 2. 注册「OA审批」二级目录(挂在系统管理顶级下)
-- ---------------------------------------------------------------------------
INSERT INTO `sys_menu` (
`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
`is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
)
SELECT
'OA000000000000000000000000000001', 'OA审批', 'TOP00000000000000000000000000005', 'M',
'oa-approval', NULL, NULL,
1, '1', '1', 'zkxw', 2, '钉钉式 OA 审批(替代旧工作流管理)',
NULL, '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'OA000000000000000000000000000001'
);
-- 若曾假删过同 id,则恢复
UPDATE `sys_menu`
SET `del_flag` = 0,
`menu_name` = 'OA审批',
`parent_id` = 'TOP00000000000000000000000000005',
`menu_type` = 'M',
`path` = 'oa-approval',
`component` = NULL,
`perms` = NULL,
`visible` = '1',
`status` = '1',
`order_num` = 2,
`update_time` = NOW()
WHERE `id` = 'OA000000000000000000000000000001';
-- ---------------------------------------------------------------------------
-- 3. 注册 OA 三级菜单(可见页 + 隐藏详情/设计页)
-- ---------------------------------------------------------------------------
INSERT INTO `sys_menu` (
`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
`is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
)
SELECT * FROM (
SELECT 'OA000000000000000000000000000101' AS id, '审批管理' AS menu_name,
'OA000000000000000000000000000001' AS parent_id, 'C' AS menu_type,
'apps' AS path, '/oa-approval/apps/index' AS component, 'oa:apps:list' AS perms,
1 AS is_frame, '1' AS visible, '1' AS status, 'zkxw' AS tenant_no, 1 AS order_num,
NULL AS remark, NULL AS create_by, '' AS create_dept_id, NOW() AS create_time,
NULL AS update_by, NOW() AS update_time, 0 AS del_flag
UNION ALL
SELECT 'OA000000000000000000000000000102', '工作流角色',
'OA000000000000000000000000000001', 'C',
'roles', '/oa-approval/roles/index', 'oa:roles:list',
1, '1', '1', 'zkxw', 2, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000103', '发起审批',
'OA000000000000000000000000000001', 'C',
'start', '/oa-approval/start/index', 'oa:start',
1, '1', '1', 'zkxw', 3, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000104', '待办中心',
'OA000000000000000000000000000001', 'C',
'pending', '/oa-approval/pending/index', 'oa:pending',
1, '1', '1', 'zkxw', 4, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000105', '已办中心',
'OA000000000000000000000000000001', 'C',
'done', '/oa-approval/done/index', 'oa:done',
1, '1', '1', 'zkxw', 5, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000106', '我发起的',
'OA000000000000000000000000000001', 'C',
'mine', '/oa-approval/mine/index', 'oa:mine',
1, '1', '1', 'zkxw', 6, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000107', '抄送我的',
'OA000000000000000000000000000001', 'C',
'cc', '/oa-approval/cc/index', 'oa:cc',
1, '1', '1', 'zkxw', 7, NULL, NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000201', '审批设计',
'OA000000000000000000000000000001', 'C',
'designer/:id', '/oa-approval/designer/index', 'oa:designer',
1, '0', '1', 'zkxw', 8, '隐藏页:从审批管理进入', NULL, '', NOW(), NULL, NOW(), 0
UNION ALL
SELECT 'OA000000000000000000000000000202', '审批详情',
'OA000000000000000000000000000001', 'C',
'instances/:id', '/oa-approval/instances/detail', 'oa:instance:detail',
1, '0', '1', 'zkxw', 9, '隐藏页:从任务/列表进入', NULL, '', NOW(), NULL, NOW(), 0
) AS t
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` m WHERE m.`id` = t.id
);
-- 幂等:已存在则同步字段并取消伪删除
UPDATE `sys_menu` m
JOIN (
SELECT 'OA000000000000000000000000000101' AS id, '审批管理' AS menu_name, 'apps' AS path,
'/oa-approval/apps/index' AS component, 'oa:apps:list' AS perms, '1' AS visible, 1 AS order_num
UNION ALL SELECT 'OA000000000000000000000000000102', '工作流角色', 'roles', '/oa-approval/roles/index', 'oa:roles:list', '1', 2
UNION ALL SELECT 'OA000000000000000000000000000103', '发起审批', 'start', '/oa-approval/start/index', 'oa:start', '1', 3
UNION ALL SELECT 'OA000000000000000000000000000104', '待办中心', 'pending', '/oa-approval/pending/index', 'oa:pending', '1', 4
UNION ALL SELECT 'OA000000000000000000000000000105', '已办中心', 'done', '/oa-approval/done/index', 'oa:done', '1', 5
UNION ALL SELECT 'OA000000000000000000000000000106', '我发起的', 'mine', '/oa-approval/mine/index', 'oa:mine', '1', 6
UNION ALL SELECT 'OA000000000000000000000000000107', '抄送我的', 'cc', '/oa-approval/cc/index', 'oa:cc', '1', 7
UNION ALL SELECT 'OA000000000000000000000000000201', '审批设计', 'designer/:id', '/oa-approval/designer/index', 'oa:designer', '0', 8
UNION ALL SELECT 'OA000000000000000000000000000202', '审批详情', 'instances/:id', '/oa-approval/instances/detail', 'oa:instance:detail', '0', 9
) s ON m.id = s.id
SET m.`del_flag` = 0,
m.`parent_id` = 'OA000000000000000000000000000001',
m.`menu_type` = 'C',
m.`menu_name` = s.menu_name,
m.`path` = s.path,
m.`component` = s.component,
m.`perms` = s.perms,
m.`visible` = s.visible,
m.`status` = '1',
m.`order_num` = s.order_num,
m.`update_time` = NOW();
-- OA 审批菜单重命名:待处理 → 待办中心,已处理 → 已办中心
-- 已执行过 patch_2026-07-15_oa_approval_sys_menu.sql 的环境可单独跑本脚本。
UPDATE `sys_menu`
SET `menu_name` = '待办中心',
`update_time` = NOW()
WHERE `id` = 'OA000000000000000000000000000104'
AND `del_flag` = 0;
UPDATE `sys_menu`
SET `menu_name` = '已办中心',
`update_time` = NOW()
WHERE `id` = 'OA000000000000000000000000000105'
AND `del_flag` = 0;
-- OA 审批进度多轮 + 打回 + 撤销重提关联
-- MySQL 5.7 / utf8mb4
ALTER TABLE oa_instance
ADD COLUMN source_instance_id VARCHAR(64) NULL COMMENT '撤销重提所关联的原实例ID' AFTER status,
ADD COLUMN current_round INT NOT NULL DEFAULT 1 COMMENT '当前提交轮次,从1起' AFTER source_instance_id;
-- status 语义:running / returned / completed / rejected / cancelled
-- returned = 已打回,待发起人修改再提交
ALTER TABLE oa_task
ADD COLUMN round_no INT NOT NULL DEFAULT 1 COMMENT '所属提交轮次' AFTER sign_mode;
CREATE TABLE IF NOT EXISTS oa_instance_event (
id VARCHAR(64) NOT NULL COMMENT '主键ID',
instance_id VARCHAR(64) NOT NULL COMMENT '实例ID',
round_no INT NOT NULL DEFAULT 1 COMMENT '轮次',
event_type VARCHAR(32) NOT NULL COMMENT 'submit/return/withdraw/complete/reject_end',
actor_user_id VARCHAR(64) NULL COMMENT '操作人',
task_id VARCHAR(64) NULL COMMENT '关联任务(打回时)',
node_key VARCHAR(64) NULL COMMENT '节点key',
comment_text VARCHAR(512) NULL COMMENT '意见',
tenant_no VARCHAR(64) NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
order_num INT NULL COMMENT '排序号',
remark VARCHAR(512) NULL COMMENT '备注',
create_by VARCHAR(64) NULL COMMENT '创建人id',
create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
create_time DATETIME NOT NULL COMMENT '创建时间',
update_by VARCHAR(64) NULL COMMENT '更新人id',
update_time DATETIME NOT NULL COMMENT '更新时间',
del_flag SMALLINT NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_oa_evt_inst (instance_id, del_flag, create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OA实例操作事件(进度轴)';
-- ---------------------------------------------------------------------------
-- OA 表排序规则对齐 sys_user(utf8mb4_unicode_ci)— 2026-07-17
-- 修复:成员弹窗 JOIN oa_role_user / sys_user 报 Illegal mix of collations
-- ---------------------------------------------------------------------------
ALTER TABLE oa_app_group CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_app CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_app_version CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_role CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_role_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_instance CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_task CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_relation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE oa_instance_event CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;