113 lines
8.1 KiB
SQL
113 lines
8.1 KiB
SQL
-- 手工派车日历;独立记录,不生成或修改运输计划。MySQL 5.7 / utf8mb4。
|
|
-- 同车同日允许多条,一条记录计一车次;不设置车辆+日期唯一约束。
|
|
SET NAMES utf8mb4;
|
|
CREATE TABLE IF NOT EXISTS `pl_dispatch_calendar` (
|
|
`id` varchar(64) NOT NULL COMMENT '主键UUID',
|
|
`dispatch_date` date NOT NULL COMMENT '派车日期',
|
|
`vehicle_id` varchar(64) NOT NULL COMMENT '车辆ID',
|
|
`license_plate` varchar(20) NOT NULL COMMENT '车牌快照',
|
|
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
|
|
`product_name` varchar(200) NOT NULL COMMENT '产品名称快照',
|
|
`origin` varchar(255) NOT NULL COMMENT '始发地',
|
|
`destination` varchar(255) NOT NULL COMMENT '目的地',
|
|
`quantity` varchar(16) DEFAULT NULL COMMENT '数量文本(吨),最多两位小数,不参与汇总',
|
|
`calendar_kind` varchar(16) NOT NULL DEFAULT 'acid' COMMENT '日历类型:acid酸派车 alkali碱派车 other其他',
|
|
`tenant_no` varchar(64) NOT NULL COMMENT '租户编号',
|
|
`order_num` int 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 NOT NULL DEFAULT 0 COMMENT '删除标记',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_dispatch_calendar_month` (`tenant_no`,`del_flag`,`dispatch_date`),
|
|
KEY `idx_dispatch_calendar_vehicle` (`tenant_no`,`vehicle_id`,`dispatch_date`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='手工派车日历';
|
|
|
|
-- 维护与查看分权;仅向已有日历入口且具有运输计划维护能力的角色授予维护按钮。
|
|
-- Web 现有 pl:plan:list 是运输计划编辑入口,没有 add/edit 粒度;
|
|
-- 小程序使用明确的 mini:pl:plan:manage。单独日历只读角色不会获得写权限。
|
|
-- F 类型为操作权限,不生成路由;visible=1 保证现有权限解析器能读取此权限。
|
|
-- 可重复执行,不恢复软删除菜单/授权;不改变已有日历入口及运输计划菜单。
|
|
START TRANSACTION;
|
|
|
|
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_time,del_flag
|
|
)
|
|
SELECT UUID(),'维护派车日历',leaf.id,'F',NULL,NULL,'pl:dispatch-calendar:manage',
|
|
1,'1','1',leaf.tenant_no,1,'独立手工派车新增修改删除权限','system','',NOW(),NOW(),0
|
|
FROM sys_menu leaf
|
|
JOIN sys_menu folder ON folder.id=leaf.parent_id AND folder.tenant_no=leaf.tenant_no AND folder.del_flag=0 AND folder.status='1' AND folder.visible='1'
|
|
JOIN sys_menu parent ON parent.id=folder.parent_id AND parent.tenant_no=leaf.tenant_no AND parent.del_flag=0 AND parent.status='1' AND parent.visible='1'
|
|
JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=leaf.tenant_no AND root.del_flag=0 AND root.status='1' AND root.visible='1'
|
|
WHERE leaf.perms='pl:dispatch-calendar:list' AND leaf.del_flag=0 AND leaf.status='1' AND leaf.visible='1'
|
|
AND root.parent_id='0' AND root.path='/web' AND parent.path='/pl'
|
|
AND NOT EXISTS (SELECT 1 FROM sys_menu existing
|
|
WHERE existing.tenant_no=leaf.tenant_no AND existing.perms='pl:dispatch-calendar:manage');
|
|
|
|
INSERT INTO sys_role_menu (
|
|
id,role_id,menu_id,tenant_no,order_num,remark,create_by,create_dept_id,create_time,update_time,del_flag
|
|
)
|
|
SELECT UUID(),r.id,target.id,r.tenant_no,0,'日历入口与运输计划维护角色交集授权','system','',NOW(),NOW(),0
|
|
FROM sys_role r
|
|
JOIN sys_menu leaf ON leaf.perms='pl:dispatch-calendar:list' AND leaf.tenant_no=r.tenant_no AND leaf.del_flag=0 AND leaf.status='1' AND leaf.visible='1'
|
|
JOIN sys_menu folder ON folder.id=leaf.parent_id AND folder.tenant_no=leaf.tenant_no AND folder.del_flag=0 AND folder.status='1' AND folder.visible='1'
|
|
JOIN sys_menu parent ON parent.id=folder.parent_id AND parent.tenant_no=leaf.tenant_no AND parent.del_flag=0 AND parent.status='1' AND parent.visible='1'
|
|
JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=leaf.tenant_no AND root.del_flag=0 AND root.status='1' AND root.visible='1'
|
|
JOIN sys_menu target ON target.parent_id=leaf.id AND target.tenant_no=r.tenant_no
|
|
AND target.perms='pl:dispatch-calendar:manage' AND target.del_flag=0 AND target.status='1' AND target.visible='1'
|
|
WHERE r.del_flag=0 AND r.status='1' AND root.parent_id='0' AND root.path='/web' AND parent.path='/pl'
|
|
AND EXISTS (SELECT 1 FROM sys_role_menu calendar_access
|
|
WHERE calendar_access.role_id=r.id AND calendar_access.menu_id=leaf.id
|
|
AND calendar_access.tenant_no=r.tenant_no AND calendar_access.del_flag=0)
|
|
AND EXISTS (
|
|
SELECT 1 FROM sys_role_menu source_access JOIN sys_menu source ON source.id=source_access.menu_id
|
|
WHERE source_access.role_id=r.id AND source_access.tenant_no=r.tenant_no
|
|
AND source.tenant_no=r.tenant_no AND source_access.del_flag=0 AND source.del_flag=0 AND source.status='1' AND source.visible='1'
|
|
AND source.perms IN ('pl:plan:list','mini:pl:plan:manage')
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM sys_role_menu existing
|
|
WHERE existing.role_id=r.id AND existing.menu_id=target.id AND existing.tenant_no=r.tenant_no);
|
|
|
|
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_time,del_flag
|
|
)
|
|
SELECT UUID(),'维护派车日历',leaf.id,'F',NULL,NULL,'mini:pl:dispatch-calendar:manage',
|
|
1,'1','1',leaf.tenant_no,1,'独立手工派车新增修改删除权限','system','',NOW(),NOW(),0
|
|
FROM sys_menu leaf
|
|
JOIN sys_menu parent ON parent.id=leaf.parent_id AND parent.tenant_no=leaf.tenant_no AND parent.del_flag=0 AND parent.status='1' AND parent.visible='1'
|
|
JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=leaf.tenant_no AND root.del_flag=0 AND root.status='1' AND root.visible='1'
|
|
WHERE leaf.perms='mini:pl:dispatch-calendar:list' AND leaf.del_flag=0 AND leaf.status='1' AND leaf.visible='1'
|
|
AND root.parent_id='0' AND root.path='/mini' AND parent.path='/mini/pl'
|
|
AND NOT EXISTS (SELECT 1 FROM sys_menu existing
|
|
WHERE existing.tenant_no=leaf.tenant_no AND existing.perms='mini:pl:dispatch-calendar:manage');
|
|
|
|
INSERT INTO sys_role_menu (
|
|
id,role_id,menu_id,tenant_no,order_num,remark,create_by,create_dept_id,create_time,update_time,del_flag
|
|
)
|
|
SELECT UUID(),r.id,target.id,r.tenant_no,0,'日历入口与运输计划维护角色交集授权','system','',NOW(),NOW(),0
|
|
FROM sys_role r
|
|
JOIN sys_menu leaf ON leaf.perms='mini:pl:dispatch-calendar:list' AND leaf.tenant_no=r.tenant_no AND leaf.del_flag=0 AND leaf.status='1' AND leaf.visible='1'
|
|
JOIN sys_menu parent ON parent.id=leaf.parent_id AND parent.tenant_no=leaf.tenant_no AND parent.del_flag=0 AND parent.status='1' AND parent.visible='1'
|
|
JOIN sys_menu root ON root.id=parent.parent_id AND root.tenant_no=leaf.tenant_no AND root.del_flag=0 AND root.status='1' AND root.visible='1'
|
|
JOIN sys_menu target ON target.parent_id=leaf.id AND target.tenant_no=r.tenant_no
|
|
AND target.perms='mini:pl:dispatch-calendar:manage' AND target.del_flag=0 AND target.status='1' AND target.visible='1'
|
|
WHERE r.del_flag=0 AND r.status='1' AND root.parent_id='0' AND root.path='/mini' AND parent.path='/mini/pl'
|
|
AND EXISTS (SELECT 1 FROM sys_role_menu calendar_access
|
|
WHERE calendar_access.role_id=r.id AND calendar_access.menu_id=leaf.id
|
|
AND calendar_access.tenant_no=r.tenant_no AND calendar_access.del_flag=0)
|
|
AND EXISTS (
|
|
SELECT 1 FROM sys_role_menu source_access JOIN sys_menu source ON source.id=source_access.menu_id
|
|
WHERE source_access.role_id=r.id AND source_access.tenant_no=r.tenant_no
|
|
AND source.tenant_no=r.tenant_no AND source_access.del_flag=0 AND source.del_flag=0 AND source.status='1' AND source.visible='1'
|
|
AND source.perms IN ('pl:plan:list','mini:pl:plan:manage')
|
|
)
|
|
AND NOT EXISTS (SELECT 1 FROM sys_role_menu existing
|
|
WHERE existing.role_id=r.id AND existing.menu_id=target.id AND existing.tenant_no=r.tenant_no);
|
|
|
|
COMMIT;
|