| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- -- 手工派车日历;独立记录,不生成或修改运输计划。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;
|