197 lines
10 KiB
SQL
197 lines
10 KiB
SQL
-- 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 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 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 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 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 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 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 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 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审批 节点插入,以及旧「工作流管理」伪删除)
|