This commit is contained in:
zlwu committed 2026-07-15 16:20:48 +08:00
1 parent c9711d0dce
commit 28e59a2262
218 files changed
+20698 -7413

No files matched your search

+196
View File
@@ -0,0 +1,196 @@
-- 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审批 节点插入,以及旧「工作流管理」伪删除)