优化审批流

This commit is contained in:
hero920103 committed 2026-10-07 22:56:35 +08:00
1 parent ffaadc26ae
commit 438145cae7
17 files changed
+1131 -187

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
-- =============================================================
-- 审批流双层绑定重构 v2 - 增量迁移
--
-- 场景:上一版 create_approval_binding.sql 已建表但含 condition_expr/priority
-- 本次将绑定层简化为纯关联,流程表加 apply_dept_ids 部门作用域。
--
-- 执行顺序:
-- 1) DROP + 重建绑定表(结构变简,无法原地迁移)
-- 2) 后端流程表补 apply_dept_ids
-- =============================================================
-- 1. 绑定表:先删后建(如已有绑定数据请手工备份后再执行)
DROP TABLE IF EXISTS `yz_approval_binding`;
CREATE TABLE `yz_approval_binding` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`scope` TINYINT NOT NULL DEFAULT 1 COMMENT '1租户 2平台',
`tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID(平台侧为0)',
`biz_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '功能/单据类型:reimburse/bid/domain',
`flow_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '绑定的审批流ID',
`flow_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '审批流编号(冗余)',
`remark` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '备注',
`is_deleted` TINYINT NOT NULL DEFAULT 0,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_scope_tid_biz_flow` (`scope`,`tid`,`biz_type`,`flow_id`),
KEY `idx_flow` (`flow_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审批流功能绑定(biz_type↔flow 多对多)';
-- 2. 后端流程表:补部门作用域列
ALTER TABLE `yz_backend_approval_flow`
ADD COLUMN `apply_dept_ids` VARCHAR(500) NOT NULL DEFAULT ''
COMMENT '适用部门ID列表 CSV,空=全公司通用' AFTER `flow_code`;
@@ -0,0 +1,33 @@
-- =============================================================
-- 审批流图编辑器 - 增量迁移(对已存在的旧表补列)
-- MySQL 兼容写法:如列已存在会报错,跳过该条即可
-- 如果表本身不存在,请先执行 create_approval_flow.sql
-- =============================================================
-- 1. 租户侧流程表:补 flow_code
ALTER TABLE `yz_backend_approval_flow`
ADD COLUMN `flow_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '审批流编号(自动生成 FL%06d)' AFTER `biz_type`;
ALTER TABLE `yz_backend_approval_flow`
ADD INDEX `idx_tid_code` (`tid`, `flow_code`);
-- 2. 租户侧节点表:补 pos_x / pos_y
ALTER TABLE `yz_backend_approval_node`
ADD COLUMN `pos_x` INT NOT NULL DEFAULT 0 COMMENT '画布X坐标' AFTER `sort`,
ADD COLUMN `pos_y` INT NOT NULL DEFAULT 0 COMMENT '画布Y坐标' AFTER `pos_x`;
-- 3. 平台侧流程表:补 flow_code
ALTER TABLE `yz_platform_approval_flow`
ADD COLUMN `flow_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '审批流编号(自动生成 FL%06d)' AFTER `biz_type`;
ALTER TABLE `yz_platform_approval_flow`
ADD INDEX `idx_code` (`flow_code`);
-- 4. 平台侧节点表:补 pos_x / pos_y
ALTER TABLE `yz_platform_approval_node`
ADD COLUMN `pos_x` INT NOT NULL DEFAULT 0 COMMENT '画布X坐标' AFTER `sort`,
ADD COLUMN `pos_y` INT NOT NULL DEFAULT 0 COMMENT '画布Y坐标' AFTER `pos_x`;
-- 5. 实例表:补 form_data(条件求值用表单快照 JSON)
ALTER TABLE `yz_approval_instance`
ADD COLUMN `form_data` TEXT NULL COMMENT '发起表单数据快照(JSON)' AFTER `submit_dept_id`;
+29
View File
@@ -0,0 +1,29 @@
-- =============================================================
-- 审批流功能绑定(biz_type ↔ flow 多对多关联)
--
-- 对应模型:go/models/approval.go ApprovalBinding
-- 用途:给某个功能(biz_type)绑定"可选审批流"清单,业务代码通过
-- ListAvailableFlows(scope, tid, bizType, userOrgID) 拿到过滤后的
-- 可用流;若一条流程设置了 apply_dept_ids,则仅该部门成员可见。
--
-- 注意:本表**不含条件表达式 / 优先级**——条件分支在流程内部(条件网关)
-- 实现,与绑定层无关。
-- =============================================================
SET NAMES utf8mb4;
CREATE TABLE IF NOT EXISTS `yz_approval_binding` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`scope` TINYINT NOT NULL DEFAULT 1 COMMENT '1租户 2平台',
`tid` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '租户ID(平台侧为0)',
`biz_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '功能/单据类型:reimburse/bid/domain',
`flow_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '绑定的审批流ID',
`flow_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '审批流编号(冗余,方便查询)',
`remark` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '备注',
`is_deleted` TINYINT NOT NULL DEFAULT 0,
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_scope_tid_biz_flow` (`scope`,`tid`,`biz_type`,`flow_id`),
KEY `idx_flow` (`flow_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='审批流功能绑定(biz_type↔flow 多对多)';
+1
View File
@@ -24,6 +24,7 @@ CREATE TABLE IF NOT EXISTS `yz_backend_approval_flow` (
`module_code` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '所属功能模块 code(yz_system_modules.code):oa/erp/crm/cms',
`biz_type` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '适用单据类型:reimburse/bid/domain/...',
`flow_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '审批流编号(自动生成、全局唯一,供各程序按编号发起):FL000007',
`apply_dept_ids` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '适用部门ID列表 CSV(yz_backend_organization.id),空=全公司通用',
`flow_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '流程名称',
`description` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '流程说明',
`is_default` TINYINT NOT NULL DEFAULT 0 COMMENT '是否该单据类型的默认流程:1是 0否',