This commit is contained in:
zlwu committed 2026-07-27 19:47:13 +08:00
1 parent 51f205e89b
commit bff544404f
20 files changed
+30506 -4660

No files matched your search

@@ -1,14 +0,0 @@
-- OA 表与 sys_user 等系统表排序规则对齐
-- 问题:oa_* 建表仅写 DEFAULT CHARSET=utf8mb4,MySQL 5.7 默认 utf8mb4_general_ci;
-- sys_user.id 等为 utf8mb4_unicode_ci,JOIN 报 1267 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;
@@ -1,4 +0,0 @@
-- OA 实例:按节点持久化发起人自选(nodeId -> userId[])
ALTER TABLE oa_instance
ADD COLUMN initiator_select_json TEXT NULL COMMENT '发起人自选 JSON {nodeId:[userId,...]}'
AFTER form_data_json;
@@ -1,31 +0,0 @@
-- 生产产品类型:从中试细胞产品类型解耦
-- 表结构对齐 biz_cell_product_type;同 id 拷贝现有未删除数据(幂等)
CREATE TABLE IF NOT EXISTS `biz_production_product_type` (
`id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '主键ID',
`product_type_code` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品类型编码',
`product_type_name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '产品类型名称',
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
`create_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人id',
`create_dept_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '创建人部门ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人id',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`del_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='生产产品类型';
INSERT INTO `biz_production_product_type` (
`id`, `product_type_code`, `product_type_name`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
)
SELECT
src.`id`, src.`product_type_code`, src.`product_type_name`, src.`tenant_no`, src.`order_num`, src.`remark`,
src.`create_by`, src.`create_dept_id`, src.`create_time`, src.`update_by`, src.`update_time`, src.`del_flag`
FROM `biz_cell_product_type` src
WHERE src.`del_flag` = 0
AND NOT EXISTS (
SELECT 1 FROM `biz_production_product_type` dst WHERE dst.`id` = src.`id`
);
@@ -0,0 +1,117 @@
-- =============================================================================
-- 为全部有效角色授予【OA审批】及其全部子菜单权限
-- 依据:docs/sql/zkxw.sql(sys_menu / sys_role / sys_role_menu)
--
-- 菜单范围:
-- OA000...000001 OA审批(目录)
-- OA000...000101 审批管理
-- OA000...000102 工作流角色
-- OA000...000103 发起审批
-- OA000...000104 待办中心
-- OA000...000105 已办中心
-- OA000...000106 我发起的
-- OA000...000107 抄送我的
-- OA000...000201 审批设计(隐藏页)
-- OA000...000202 审批详情(隐藏页)
--
-- 另按权限约定补齐祖先菜单,避免侧栏孤儿节点无法展示:
-- 2 Web端菜单
-- TOP000...00005 系统管理(OA审批的上级目录)
--
-- 幂等:已存在且未删除则跳过;已软删则恢复;缺失则新增。
-- =============================================================================
SET NAMES utf8mb4;
-- -----------------------------------------------------------------------------
-- 目标菜单集合:OA审批 + 全部子菜单 + 祖先菜单
-- -----------------------------------------------------------------------------
DROP TEMPORARY TABLE IF EXISTS tmp_oa_grant_menus;
CREATE TEMPORARY TABLE tmp_oa_grant_menus (
menu_id VARCHAR(64) NOT NULL PRIMARY KEY
) ENGINE=Memory;
INSERT INTO tmp_oa_grant_menus (menu_id)
SELECT m.id
FROM sys_menu m
WHERE m.del_flag = 0
AND (
-- OA审批自身
m.id = 'OA000000000000000000000000000001'
-- OA审批下全部子菜单(当前均为一级子节点)
OR m.parent_id = 'OA000000000000000000000000000001'
-- 祖先:侧栏可展示
OR m.id IN (
'2', -- Web端菜单
'TOP00000000000000000000000000005' -- 系统管理
)
);
-- -----------------------------------------------------------------------------
-- 1) 恢复已软删的角色-菜单关联
-- -----------------------------------------------------------------------------
UPDATE sys_role_menu rm
INNER JOIN sys_role r
ON r.id = rm.role_id
AND r.del_flag = 0
INNER JOIN tmp_oa_grant_menus t
ON t.menu_id = rm.menu_id
SET
rm.del_flag = 0,
rm.update_time = NOW(),
rm.remark = COALESCE(rm.remark, 'grant OA审批 menu to all roles')
WHERE rm.del_flag = 1;
-- -----------------------------------------------------------------------------
-- 2) 为尚未关联的角色补插菜单权限
-- -----------------------------------------------------------------------------
INSERT INTO sys_role_menu (
id,
role_id,
menu_id,
tenant_no,
order_num,
remark,
create_by,
create_dept_id,
create_time,
update_by,
update_time,
del_flag
)
SELECT
-- MySQL 5.7 批量 INSERT…SELECT 时 UUID() 可能同批重复;用 role+menu 确定性主键
UPPER(MD5(CONCAT('oa-grant|', r.id, '|', t.menu_id))) AS id,
r.id AS role_id,
t.menu_id AS menu_id,
r.tenant_no AS tenant_no,
0 AS order_num,
'grant OA审批 menu to all roles' 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
FROM sys_role r
CROSS JOIN tmp_oa_grant_menus t
WHERE r.del_flag = 0
AND NOT EXISTS (
SELECT 1
FROM sys_role_menu x
WHERE x.role_id = r.id
AND x.menu_id = t.menu_id
);
-- -----------------------------------------------------------------------------
-- 校验(可选,执行后查看结果)
-- -----------------------------------------------------------------------------
-- SELECT r.role_name, COUNT(*) AS oa_menu_cnt
-- FROM sys_role r
-- INNER JOIN sys_role_menu rm ON rm.role_id = r.id AND rm.del_flag = 0
-- INNER JOIN tmp_oa_grant_menus t ON t.menu_id = rm.menu_id
-- WHERE r.del_flag = 0
-- GROUP BY r.id, r.role_name
-- ORDER BY r.role_name;
DROP TEMPORARY TABLE IF EXISTS tmp_oa_grant_menus;
+25581 -291
View File
File diff suppressed because it is too large. Load diff