2026-09-12-pl-vehicle-fuel-register-prod-perms.sql 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. -- 生产/补跑:车辆加油登记表 + 菜单
  2. -- 权限:全部角色 → 加油登记;仅「管理员」→ 加油信息汇总
  3. -- 目标库示例:.env.production → shanxia2.0
  4. SET NAMES utf8mb4;
  5. CREATE TABLE IF NOT EXISTS `pl_vehicle_fuel_register` (
  6. `id` varchar(64) NOT NULL COMMENT '主键ID',
  7. `register_no` varchar(32) NOT NULL COMMENT '登记单号 SXJY+YYYYMMDD+6位',
  8. `fuel_category` varchar(20) NOT NULL COMMENT '加油类别 bailian-百链 gas_station-加油站',
  9. `register_date` date NOT NULL COMMENT '日期',
  10. `registrant_id` varchar(64) NOT NULL COMMENT '登记人用户ID',
  11. `license_plate` varchar(20) NOT NULL COMMENT '车牌号',
  12. `odometer_km` decimal(10,1) DEFAULT NULL COMMENT '期初公里数',
  13. `fuel_liters` decimal(10,2) NOT NULL COMMENT '加油升数',
  14. `attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL,逗号分隔',
  15. `status` varchar(20) NOT NULL DEFAULT 'normal' COMMENT 'normal-正常 cancelled-已作废',
  16. `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
  17. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  18. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  19. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  20. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  21. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  22. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  23. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  24. `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除',
  25. PRIMARY KEY (`id`),
  26. UNIQUE KEY `uk_register_no` (`register_no`),
  27. KEY `idx_tenant_date` (`tenant_no`, `register_date`),
  28. KEY `idx_tenant_registrant` (`tenant_no`, `registrant_id`),
  29. KEY `idx_tenant_plate` (`tenant_no`, `license_plate`),
  30. KEY `idx_tenant_status` (`tenant_no`, `status`)
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆加油登记';
  32. INSERT INTO `sys_menu` (
  33. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  34. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  35. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  36. )
  37. SELECT
  38. 'PL_VEH_FUEL_REG', '加油登记', 'PL_GROUP_VEHICLE', 'C',
  39. 'vehicle-fuel-register', 'pl/vehicle-fuel-register/index',
  40. 'pl:vehicle-fuel-register:list', 1, '1', '1', 'shanxia2.0', 7, NULL,
  41. 'system', '', NOW(), NULL, NOW(), 0
  42. FROM DUAL
  43. WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VEH_FUEL_REG' AND `del_flag` = 0);
  44. INSERT INTO `sys_menu` (
  45. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  46. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  47. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  48. )
  49. SELECT 'PL_VFR_Q', '查询', 'PL_VEH_FUEL_REG', 'F', '', '', 'pl:vehicle-fuel-register:query',
  50. 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0
  51. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFR_Q' AND `del_flag` = 0);
  52. INSERT INTO `sys_menu` (
  53. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  54. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  55. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  56. )
  57. SELECT 'PL_VFR_A', '新增', 'PL_VEH_FUEL_REG', 'F', '', '', 'pl:vehicle-fuel-register:add',
  58. 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0
  59. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFR_A' AND `del_flag` = 0);
  60. INSERT INTO `sys_menu` (
  61. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  62. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  63. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  64. )
  65. SELECT 'PL_VFR_E', '编辑', 'PL_VEH_FUEL_REG', 'F', '', '', 'pl:vehicle-fuel-register:edit',
  66. 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0
  67. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFR_E' AND `del_flag` = 0);
  68. INSERT INTO `sys_menu` (
  69. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  70. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  71. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  72. )
  73. SELECT 'PL_VFR_C', '作废', 'PL_VEH_FUEL_REG', 'F', '', '', 'pl:vehicle-fuel-register:cancel',
  74. 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0
  75. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFR_C' AND `del_flag` = 0);
  76. INSERT INTO `sys_menu` (
  77. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  78. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  79. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  80. )
  81. SELECT
  82. 'PL_VEH_FUEL_SUM', '加油信息汇总', 'PL_GROUP_VEHICLE', 'C',
  83. 'vehicle-fuel-summary', 'pl/vehicle-fuel-summary/index',
  84. 'pl:vehicle-fuel-summary:list', 1, '1', '1', 'shanxia2.0', 8, NULL,
  85. 'system', '', NOW(), NULL, NOW(), 0
  86. FROM DUAL
  87. WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VEH_FUEL_SUM' AND `del_flag` = 0);
  88. INSERT INTO `sys_menu` (
  89. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  90. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  91. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  92. )
  93. SELECT 'PL_VFS_Q', '查询', 'PL_VEH_FUEL_SUM', 'F', '', '', 'pl:vehicle-fuel-summary:query',
  94. 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0
  95. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFS_Q' AND `del_flag` = 0);
  96. INSERT INTO `sys_menu` (
  97. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  98. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  99. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  100. )
  101. SELECT 'PL_VFS_A', '新增', 'PL_VEH_FUEL_SUM', 'F', '', '', 'pl:vehicle-fuel-summary:add',
  102. 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0
  103. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFS_A' AND `del_flag` = 0);
  104. INSERT INTO `sys_menu` (
  105. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  106. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  107. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  108. )
  109. SELECT 'PL_VFS_E', '编辑', 'PL_VEH_FUEL_SUM', 'F', '', '', 'pl:vehicle-fuel-summary:edit',
  110. 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0
  111. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFS_E' AND `del_flag` = 0);
  112. INSERT INTO `sys_menu` (
  113. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  114. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  115. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  116. )
  117. SELECT 'PL_VFS_C', '作废', 'PL_VEH_FUEL_SUM', 'F', '', '', 'pl:vehicle-fuel-summary:cancel',
  118. 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0
  119. FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VFS_C' AND `del_flag` = 0);
  120. -- 全部角色:加油登记(含祖先菜单,保证侧栏可见)
  121. INSERT INTO `sys_role_menu` (
  122. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  123. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  124. )
  125. SELECT
  126. MD5(CONCAT(r.id, '|', m.menu_id, '|fuel-reg-all|v1')),
  127. r.id,
  128. m.menu_id,
  129. IFNULL(NULLIF(r.tenant_no, ''), 'shanxia2.0'),
  130. 0,
  131. '加油登记:全角色授权',
  132. 'system',
  133. '',
  134. NOW(),
  135. NULL,
  136. NOW(),
  137. 0
  138. FROM `sys_role` r
  139. JOIN (
  140. SELECT '2' AS menu_id UNION ALL
  141. SELECT 'PL_MENU_ROOT' UNION ALL
  142. SELECT 'PL_GROUP_VEHICLE' UNION ALL
  143. SELECT 'PL_VEH_FUEL_REG' UNION ALL
  144. SELECT 'PL_VFR_Q' UNION ALL
  145. SELECT 'PL_VFR_A' UNION ALL
  146. SELECT 'PL_VFR_E' UNION ALL
  147. SELECT 'PL_VFR_C'
  148. ) m
  149. WHERE r.del_flag = 0
  150. AND NOT EXISTS (
  151. SELECT 1 FROM `sys_role_menu` x
  152. WHERE x.role_id = r.id AND x.menu_id = m.menu_id AND x.del_flag = 0
  153. );
  154. -- 仅「管理员」:加油信息汇总
  155. INSERT INTO `sys_role_menu` (
  156. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  157. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  158. )
  159. SELECT
  160. MD5(CONCAT(r.id, '|', m.menu_id, '|fuel-sum-admin|v1')),
  161. r.id,
  162. m.menu_id,
  163. IFNULL(NULLIF(r.tenant_no, ''), 'shanxia2.0'),
  164. 0,
  165. '加油信息汇总:仅管理员',
  166. 'system',
  167. '',
  168. NOW(),
  169. NULL,
  170. NOW(),
  171. 0
  172. FROM `sys_role` r
  173. JOIN (
  174. SELECT 'PL_VEH_FUEL_SUM' AS menu_id UNION ALL
  175. SELECT 'PL_VFS_Q' UNION ALL
  176. SELECT 'PL_VFS_A' UNION ALL
  177. SELECT 'PL_VFS_E' UNION ALL
  178. SELECT 'PL_VFS_C'
  179. ) m
  180. WHERE r.del_flag = 0
  181. AND r.role_name = '管理员'
  182. AND NOT EXISTS (
  183. SELECT 1 FROM `sys_role_menu` x
  184. WHERE x.role_id = r.id AND x.menu_id = m.menu_id AND x.del_flag = 0
  185. );