2026-10-25-pl-vehicle-fuel-card.sql 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. -- 车油卡信息:P01 独立台账,9 条经用户确认的绑定。
  2. -- MySQL 5.7 / utf8mb4。DDL 自动提交;其后菜单及初始数据使用一个事务。
  3. SET NAMES utf8mb4;
  4. CREATE TABLE IF NOT EXISTS `pl_vehicle_fuel_card` (
  5. `id` varchar(64) NOT NULL COMMENT '主键UUID',
  6. `license_plate` varchar(20) NOT NULL COMMENT '车牌号',
  7. `card_no` varchar(64) NOT NULL COMMENT '油卡卡号,字符串保留全部数字',
  8. `tenant_no` varchar(64) NOT NULL COMMENT '租户编号',
  9. `order_num` int DEFAULT NULL COMMENT '排序号',
  10. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  11. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
  12. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建部门',
  13. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  14. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
  15. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  16. `del_flag` smallint NOT NULL DEFAULT 0 COMMENT '删除标记',
  17. `active_marker` int GENERATED ALWAYS AS (CASE WHEN `del_flag` = 0 THEN 1 ELSE NULL END) STORED COMMENT '有效绑定唯一索引辅助列',
  18. PRIMARY KEY (`id`),
  19. UNIQUE KEY `uk_fuel_card_plate` (`tenant_no`,`license_plate`,`active_marker`),
  20. UNIQUE KEY `uk_fuel_card_number` (`tenant_no`,`card_no`,`active_marker`)
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='车油卡信息';
  22. START TRANSACTION;
  23. -- 固定 UUID 防止重复导入,也不恢复已软删除的种子或覆盖人工编辑。
  24. INSERT INTO `pl_vehicle_fuel_card`
  25. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  26. SELECT '760c34c6-8119-52dc-bebe-25ba37e63c9b','皖HA3779','1000113400007229003','shanxia2.0','','system',''
  27. FROM DUAL WHERE NOT EXISTS (
  28. SELECT 1 FROM `pl_vehicle_fuel_card`
  29. WHERE `id`='760c34c6-8119-52dc-bebe-25ba37e63c9b' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  30. AND (`license_plate`='皖HA3779' OR `card_no`='1000113400007229003'))
  31. );
  32. INSERT INTO `pl_vehicle_fuel_card`
  33. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  34. SELECT '6e4d07ef-7e5b-5455-8ecc-2b62ca3b2980','皖H21522','1000113400008366476','shanxia2.0','','system',''
  35. FROM DUAL WHERE NOT EXISTS (
  36. SELECT 1 FROM `pl_vehicle_fuel_card`
  37. WHERE `id`='6e4d07ef-7e5b-5455-8ecc-2b62ca3b2980' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  38. AND (`license_plate`='皖H21522' OR `card_no`='1000113400008366476'))
  39. );
  40. INSERT INTO `pl_vehicle_fuel_card`
  41. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  42. SELECT '45edbfe7-eaa6-5896-803b-8b7c3f7000fa','皖H09177','1000113400008366597','shanxia2.0','','system',''
  43. FROM DUAL WHERE NOT EXISTS (
  44. SELECT 1 FROM `pl_vehicle_fuel_card`
  45. WHERE `id`='45edbfe7-eaa6-5896-803b-8b7c3f7000fa' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  46. AND (`license_plate`='皖H09177' OR `card_no`='1000113400008366597'))
  47. );
  48. INSERT INTO `pl_vehicle_fuel_card`
  49. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  50. SELECT '9687e3e7-3c8e-57a3-9598-26d9b8f7f965','皖H57837','1000113400008449206','shanxia2.0','','system',''
  51. FROM DUAL WHERE NOT EXISTS (
  52. SELECT 1 FROM `pl_vehicle_fuel_card`
  53. WHERE `id`='9687e3e7-3c8e-57a3-9598-26d9b8f7f965' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  54. AND (`license_plate`='皖H57837' OR `card_no`='1000113400008449206'))
  55. );
  56. INSERT INTO `pl_vehicle_fuel_card`
  57. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  58. SELECT '1188cc8c-3627-532e-8fe5-366e5b5dd2a4','皖H10291','1000113400009181778','shanxia2.0','','system',''
  59. FROM DUAL WHERE NOT EXISTS (
  60. SELECT 1 FROM `pl_vehicle_fuel_card`
  61. WHERE `id`='1188cc8c-3627-532e-8fe5-366e5b5dd2a4' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  62. AND (`license_plate`='皖H10291' OR `card_no`='1000113400009181778'))
  63. );
  64. INSERT INTO `pl_vehicle_fuel_card`
  65. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  66. SELECT 'ddda5a4d-0c1e-5c85-b58b-dd39eef2b763','皖H31656','1000113400009181813','shanxia2.0','','system',''
  67. FROM DUAL WHERE NOT EXISTS (
  68. SELECT 1 FROM `pl_vehicle_fuel_card`
  69. WHERE `id`='ddda5a4d-0c1e-5c85-b58b-dd39eef2b763' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  70. AND (`license_plate`='皖H31656' OR `card_no`='1000113400009181813'))
  71. );
  72. INSERT INTO `pl_vehicle_fuel_card`
  73. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  74. SELECT '760d01df-0ca5-5ea7-974a-ac15004210e8','皖H13532','1000113400009181814','shanxia2.0','','system',''
  75. FROM DUAL WHERE NOT EXISTS (
  76. SELECT 1 FROM `pl_vehicle_fuel_card`
  77. WHERE `id`='760d01df-0ca5-5ea7-974a-ac15004210e8' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  78. AND (`license_plate`='皖H13532' OR `card_no`='1000113400009181814'))
  79. );
  80. INSERT INTO `pl_vehicle_fuel_card`
  81. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  82. SELECT '19300c64-1079-5610-8a2f-b7eba248a3e0','皖HA3190','1000113400009181874','shanxia2.0','','system',''
  83. FROM DUAL WHERE NOT EXISTS (
  84. SELECT 1 FROM `pl_vehicle_fuel_card`
  85. WHERE `id`='19300c64-1079-5610-8a2f-b7eba248a3e0' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  86. AND (`license_plate`='皖HA3190' OR `card_no`='1000113400009181874'))
  87. );
  88. INSERT INTO `pl_vehicle_fuel_card`
  89. (`id`,`license_plate`,`card_no`,`tenant_no`,`remark`,`create_by`,`create_dept_id`)
  90. SELECT '2d0f7405-7c38-5dd6-9491-9f4381bfd66f','皖LB1283','1000113400009309765','shanxia2.0','旧卡号:1000113400009253456','system',''
  91. FROM DUAL WHERE NOT EXISTS (
  92. SELECT 1 FROM `pl_vehicle_fuel_card`
  93. WHERE `id`='2d0f7405-7c38-5dd6-9491-9f4381bfd66f' OR (`tenant_no`='shanxia2.0' AND `del_flag`=0
  94. AND (`license_plate`='皖LB1283' OR `card_no`='1000113400009309765'))
  95. );
  96. -- 菜单插在审批人设置之后,只写 Web 所属目录。
  97. INSERT INTO `sys_menu`
  98. (`id`,`menu_name`,`parent_id`,`menu_type`,`path`,`component`,`perms`,
  99. `is_frame`,`visible`,`status`,`tenant_no`,`order_num`,`create_by`,`create_dept_id`)
  100. SELECT 'PL_VEH_FUEL_CARD','车油卡信息',wf.parent_id,'C','vehicle-fuel-card',
  101. 'pl/vehicle-fuel-card/index','pl:vehicle-fuel-card:list',1,'1','1',
  102. wf.tenant_no,COALESCE(wf.order_num,4)+1,'system',''
  103. FROM `sys_menu` wf
  104. WHERE wf.id='PL_VEH_RECHARGE_WF' AND wf.tenant_no='shanxia2.0' AND wf.del_flag=0
  105. AND NOT EXISTS (SELECT 1 FROM `sys_menu` existing WHERE existing.id='PL_VEH_FUEL_CARD');
  106. -- 沿用审批人设置已有角色,补齐新菜单及全部祖先(当前层级最多4层)。
  107. -- 不恢复管理员主动软删除的授权。
  108. INSERT INTO `sys_role_menu`
  109. (`id`,`role_id`,`menu_id`,`tenant_no`,`create_by`,`create_dept_id`)
  110. SELECT UUID(), eligible.role_id, target.id, eligible.tenant_no, 'system', ''
  111. FROM (
  112. SELECT DISTINCT rm.role_id,rm.tenant_no FROM `sys_role_menu` rm
  113. JOIN `sys_role` r ON r.id=rm.role_id AND r.tenant_no=rm.tenant_no AND r.del_flag=0 AND r.status='1'
  114. WHERE rm.menu_id='PL_VEH_RECHARGE_WF' AND rm.tenant_no='shanxia2.0' AND rm.del_flag=0
  115. ) eligible
  116. JOIN `sys_menu` child ON child.id='PL_VEH_FUEL_CARD' AND child.tenant_no=eligible.tenant_no AND child.del_flag=0
  117. LEFT JOIN `sys_menu` p1 ON p1.id=child.parent_id AND p1.tenant_no=eligible.tenant_no AND p1.del_flag=0
  118. LEFT JOIN `sys_menu` p2 ON p2.id=p1.parent_id AND p2.tenant_no=eligible.tenant_no AND p2.del_flag=0
  119. LEFT JOIN `sys_menu` p3 ON p3.id=p2.parent_id AND p3.tenant_no=eligible.tenant_no AND p3.del_flag=0
  120. JOIN `sys_menu` target ON target.id IN (child.id,p1.id,p2.id,p3.id)
  121. AND target.tenant_no=eligible.tenant_no AND target.del_flag=0
  122. WHERE NOT EXISTS (
  123. SELECT 1 FROM `sys_role_menu` existing WHERE existing.role_id=eligible.role_id
  124. AND existing.menu_id=target.id AND existing.tenant_no=eligible.tenant_no
  125. );
  126. COMMIT;