提交
This commit is contained in:
1 parent
b9ff9c9d67
commit
44749ae716
87 files changed
+35089
-21918
No files matched your search
@@ -1,106 +0,0 @@
|
||||
-- backend/scripts/migrate_20260814_duty_schedule.sql
|
||||
-- 值班排班 V1:按日链接 + 班次名额 + 报名
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `duty_day` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
|
||||
`duty_date` date NOT NULL COMMENT '值班日期',
|
||||
`access_token` varchar(64) NOT NULL COMMENT '公开访问令牌',
|
||||
`link_status` varchar(16) NOT NULL DEFAULT 'open' COMMENT 'open/closed',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_token` (`access_token`),
|
||||
UNIQUE KEY `uk_tenant_duty_date` (`tenant_no`, `duty_date`, `del_flag`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班日(一天一条公开链接)';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `duty_slot` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
|
||||
`duty_day_id` varchar(64) NOT NULL COMMENT '值班日ID',
|
||||
`shift_type` varchar(32) NOT NULL COMMENT 'morning/evening/duty',
|
||||
`capacity` int(11) NOT NULL DEFAULT 1 COMMENT '名额',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_day_shift` (`duty_day_id`, `shift_type`, `del_flag`),
|
||||
KEY `idx_day` (`duty_day_id`, `del_flag`),
|
||||
KEY `idx_tenant` (`tenant_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班班次名额';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `duty_assignment` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID(UUID)',
|
||||
`duty_slot_id` varchar(64) NOT NULL COMMENT '班次名额ID',
|
||||
`source` varchar(16) NOT NULL COMMENT 'assign/grab',
|
||||
`user_id` varchar(64) DEFAULT NULL COMMENT '系统用户ID(指定时)',
|
||||
`person_name` varchar(64) NOT NULL COMMENT '展示姓名',
|
||||
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`create_by` varchar(64) DEFAULT NULL COMMENT '创建者',
|
||||
`create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
|
||||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标志',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_slot` (`duty_slot_id`, `del_flag`),
|
||||
KEY `idx_tenant` (`tenant_no`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班占位(指定或抢班)';
|
||||
|
||||
-- 菜单:一级「值班管理」+ 叶子「值班排班」(门户首页按一级模块出卡片)
|
||||
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`
|
||||
) VALUES (
|
||||
'DUTY000000000000000000000000000',
|
||||
'值班管理',
|
||||
'2',
|
||||
'M',
|
||||
'/duty',
|
||||
'/index/index',
|
||||
NULL,
|
||||
1, '1', '1', 'shanxia2.0', 85,
|
||||
'值班一级模块(门户首页分区)',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`menu_name`=VALUES(`menu_name`),
|
||||
`component`=VALUES(`component`),
|
||||
`path`=VALUES(`path`);
|
||||
|
||||
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`
|
||||
) VALUES (
|
||||
'DUTY000000000000000000000000001',
|
||||
'值班排班',
|
||||
'DUTY000000000000000000000000000',
|
||||
'C',
|
||||
'schedule',
|
||||
'/duty/schedule/index',
|
||||
'duty:schedule:list',
|
||||
1, '1', '1', 'shanxia2.0', 1,
|
||||
'日历排班与公开抢班链接',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`menu_name`=VALUES(`menu_name`),
|
||||
`parent_id`=VALUES(`parent_id`),
|
||||
`component`=VALUES(`component`),
|
||||
`perms`=VALUES(`perms`),
|
||||
`path`=VALUES(`path`);
|
||||
@@ -1,82 +0,0 @@
|
||||
-- backend/scripts/migrate_20260815_duty_menu_portal_fix.sql
|
||||
-- 修复:值班菜单改为一级目录 /duty + 叶子 schedule,才能出现在门户首页启动器
|
||||
-- 可重复执行(幂等)
|
||||
|
||||
-- 1) 一级目录「值班管理」
|
||||
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`
|
||||
) VALUES (
|
||||
'DUTY000000000000000000000000000',
|
||||
'值班管理',
|
||||
'2',
|
||||
'M',
|
||||
'/duty',
|
||||
'/index/index',
|
||||
NULL,
|
||||
1, '1', '1', 'shanxia2.0', 85,
|
||||
'值班一级模块(门户首页分区)',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`menu_name`=VALUES(`menu_name`),
|
||||
`parent_id`=VALUES(`parent_id`),
|
||||
`menu_type`=VALUES(`menu_type`),
|
||||
`path`=VALUES(`path`),
|
||||
`component`=VALUES(`component`),
|
||||
`visible`=VALUES(`visible`),
|
||||
`status`=VALUES(`status`);
|
||||
|
||||
-- 2) 叶子「值班排班」挂到值班管理下
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`parent_id` = 'DUTY000000000000000000000000000',
|
||||
`menu_type` = 'C',
|
||||
`path` = 'schedule',
|
||||
`component` = '/duty/schedule/index',
|
||||
`perms` = 'duty:schedule:list',
|
||||
`visible` = '1',
|
||||
`status` = '1',
|
||||
`order_num` = 1,
|
||||
`update_time` = NOW()
|
||||
WHERE `id` = 'DUTY000000000000000000000000001';
|
||||
|
||||
-- 3) 给「超级管理员」「管理员」授权(若已有则忽略)
|
||||
-- 注意:INSERT…SELECT 中 UUID() 在 MySQL 5.7 可能对多行算出相同值导致主键冲突,
|
||||
-- 故用 role_id+menu_id 派生确定性主键,保证幂等可重跑。
|
||||
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
|
||||
CONCAT('DUTYRM', LEFT(MD5(CONCAT(r.id, '|', m.menu_id)), 26)),
|
||||
r.id,
|
||||
m.menu_id,
|
||||
'shanxia2.0',
|
||||
NULL,
|
||||
'duty portal',
|
||||
'system',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
FROM `sys_role` r
|
||||
JOIN (
|
||||
SELECT 'DUTY000000000000000000000000000' AS menu_id
|
||||
UNION ALL
|
||||
SELECT 'DUTY000000000000000000000000001'
|
||||
) m
|
||||
WHERE r.del_flag = 0
|
||||
AND r.role_name IN ('超级管理员', '管理员')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `sys_role_menu` rm
|
||||
WHERE rm.role_id = r.id
|
||||
AND rm.menu_id = m.menu_id
|
||||
AND IFNULL(rm.del_flag, 0) = 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`del_flag` = 0,
|
||||
`update_time` = NOW(),
|
||||
`remark` = VALUES(`remark`);
|
||||
@@ -1,33 +0,0 @@
|
||||
-- backend/scripts/migrate_20260816_crm_settlement_method_options.sql
|
||||
-- 合同结算方式:按量结算 / 月结 / 季结 / 其他
|
||||
-- 可重复执行(幂等)
|
||||
|
||||
INSERT INTO `sys_dict_data` (
|
||||
`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`,
|
||||
`order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`,
|
||||
`update_by`, `update_time`, `del_flag`
|
||||
) VALUES
|
||||
(
|
||||
'SXDC20260816SETTLE00000000000001', '按量结算', 'volume_settlement', '',
|
||||
'crm_settlement_method', 'shanxia2.0', 2, '', '1', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'SXDC20260816SETTLE00000000000002', '月结', 'monthly_settlement', '',
|
||||
'crm_settlement_method', 'shanxia2.0', 3, '', '1', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'SXDC20260816SETTLE00000000000003', '季结', 'quarterly_settlement', '',
|
||||
'crm_settlement_method', 'shanxia2.0', 4, '', '1', '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'SXDC20260816SETTLE00000000000004', '其他', 'other_settlement', '',
|
||||
'crm_settlement_method', 'shanxia2.0', 5, '', '1', '', NOW(), NULL, NOW(), 0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`dict_label` = VALUES(`dict_label`),
|
||||
`dict_value` = VALUES(`dict_value`),
|
||||
`dict_type` = VALUES(`dict_type`),
|
||||
`tenant_no` = VALUES(`tenant_no`),
|
||||
`order_num` = VALUES(`order_num`),
|
||||
`del_flag` = 0,
|
||||
`update_time` = NOW();
|
||||
@@ -1,6 +0,0 @@
|
||||
-- backend/scripts/migrate_20260817_bx_reimburse_detail_occur_date.sql
|
||||
-- 报销明细增加可选发生日期 occur_date
|
||||
|
||||
ALTER TABLE `bx_reimburse_detail`
|
||||
ADD COLUMN `occur_date` date DEFAULT NULL COMMENT '费用发生日期'
|
||||
AFTER `amount`;
|
||||
@@ -1,26 +0,0 @@
|
||||
-- backend/scripts/migrate_20260817_duty_staff_role.sql
|
||||
-- 值班排班可排班名单角色:仅作标签,不挂菜单
|
||||
|
||||
INSERT INTO `sys_role` (
|
||||
`id`, `role_name`, `data_scope`, `status`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
) VALUES (
|
||||
'R65CAAE057914CCCAE2A81BE627A5101',
|
||||
'值班人员',
|
||||
'4',
|
||||
'1',
|
||||
'shanxia2.0',
|
||||
90,
|
||||
'值班排班可指定/抢班名单;无菜单权限',
|
||||
'system',
|
||||
'',
|
||||
NOW(),
|
||||
NULL,
|
||||
NOW(),
|
||||
0
|
||||
)
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`role_name` = VALUES(`role_name`),
|
||||
`status` = VALUES(`status`),
|
||||
`remark` = VALUES(`remark`),
|
||||
`del_flag` = 0;
|
||||
@@ -57,7 +57,8 @@ INSERT INTO `sys_role_menu` (
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''),
|
||||
-- 勿用 UUID():同句多行 INSERT 易撞主键;按 role+menu 生成确定性 id
|
||||
MD5(CONCAT(`role_id`, '#PL_PLAN_CONTRACT')),
|
||||
`role_id`,
|
||||
'PL_PLAN_CONTRACT',
|
||||
`tenant_no`,
|
||||
@@ -85,7 +86,7 @@ INSERT INTO `sys_role_menu` (
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
REPLACE(UUID(), '-', ''),
|
||||
MD5(CONCAT(`role_id`, '#PL_PLAN_CONTRACT_UPD')),
|
||||
`role_id`,
|
||||
'PL_PLAN_CONTRACT_UPD',
|
||||
`tenant_no`,
|
||||
|
||||
Reference in new issue
Block a user