seed_pl_vehicle_fuel_special_plates.sql 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. -- =============================================================================
  2. -- 加油登记专用虚拟车牌:油桶 / 叉车
  3. -- 用途:写入 pl_vehicle(vehicle_type=self),使加油登记车牌下拉可选,存库为字面量。
  4. -- 排序:列表 API 对 order_num IS NULL 的记录按 create_time DESC;
  5. -- 将 create_time 设为很早,使这两条排在下拉最末(油桶 → 叉车)。
  6. -- 可在测试 / 生产库直接执行;可重复执行(幂等)。
  7. -- =============================================================================
  8. -- 1) 若已存在(含软删),恢复为可用自有车并固定排序时间
  9. UPDATE `pl_vehicle`
  10. SET
  11. `vehicle_type` = 'self',
  12. `carrier_id` = COALESCE(
  13. `carrier_id`,
  14. (
  15. SELECT t.`carrier_id`
  16. FROM (
  17. SELECT `carrier_id`
  18. FROM `pl_vehicle`
  19. WHERE `vehicle_type` = 'self'
  20. AND `del_flag` = 0
  21. AND `carrier_id` IS NOT NULL
  22. AND `carrier_id` <> ''
  23. ORDER BY `create_time` ASC
  24. LIMIT 1
  25. ) t
  26. )
  27. ),
  28. `carrier_name` = COALESCE(
  29. NULLIF(`carrier_name`, ''),
  30. (
  31. SELECT t.`carrier_name`
  32. FROM (
  33. SELECT `carrier_name`
  34. FROM `pl_vehicle`
  35. WHERE `vehicle_type` = 'self'
  36. AND `del_flag` = 0
  37. AND `carrier_id` IS NOT NULL
  38. AND `carrier_id` <> ''
  39. ORDER BY `create_time` ASC
  40. LIMIT 1
  41. ) t
  42. )
  43. ),
  44. `trailer_no` = COALESCE(NULLIF(`trailer_no`, ''), '-'),
  45. `vehicle_status` = 'available',
  46. `order_num` = NULL,
  47. `remark` = '加油登记虚拟车辆(非上路车牌)',
  48. `create_time` = CASE `license_plate`
  49. WHEN '油桶' THEN '2000-01-01 00:00:02'
  50. WHEN '叉车' THEN '2000-01-01 00:00:01'
  51. ELSE `create_time`
  52. END,
  53. `update_time` = NOW(),
  54. `del_flag` = 0
  55. WHERE `license_plate` IN ('油桶', '叉车');
  56. -- 2) 不存在则插入「油桶」(承运商取自现有自有车,保证各环境可用)
  57. INSERT INTO `pl_vehicle` (
  58. `id`,
  59. `vehicle_type`,
  60. `carrier_id`,
  61. `carrier_name`,
  62. `license_plate`,
  63. `trailer_no`,
  64. `default_driver_id`,
  65. `default_driver_name`,
  66. `load_capacity`,
  67. `vehicle_status`,
  68. `photo_urls`,
  69. `tenant_no`,
  70. `order_num`,
  71. `remark`,
  72. `create_by`,
  73. `create_dept_id`,
  74. `create_time`,
  75. `update_by`,
  76. `update_time`,
  77. `del_flag`
  78. )
  79. SELECT
  80. 'A1000000000000000000000000FUE001',
  81. 'self',
  82. src.`carrier_id`,
  83. src.`carrier_name`,
  84. '油桶',
  85. '-',
  86. NULL,
  87. NULL,
  88. NULL,
  89. 'available',
  90. '',
  91. 'shanxia2.0',
  92. NULL,
  93. '加油登记虚拟车辆(非上路车牌)',
  94. 'd3000000000000000000000000000001',
  95. 'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
  96. '2000-01-01 00:00:02',
  97. NULL,
  98. NOW(),
  99. 0
  100. FROM (
  101. SELECT `carrier_id`, `carrier_name`
  102. FROM `pl_vehicle`
  103. WHERE `vehicle_type` = 'self'
  104. AND `del_flag` = 0
  105. AND `carrier_id` IS NOT NULL
  106. AND `carrier_id` <> ''
  107. ORDER BY `create_time` ASC
  108. LIMIT 1
  109. ) src
  110. WHERE NOT EXISTS (
  111. SELECT 1 FROM `pl_vehicle` WHERE `license_plate` = '油桶'
  112. );
  113. -- 3) 不存在则插入「叉车」
  114. INSERT INTO `pl_vehicle` (
  115. `id`,
  116. `vehicle_type`,
  117. `carrier_id`,
  118. `carrier_name`,
  119. `license_plate`,
  120. `trailer_no`,
  121. `default_driver_id`,
  122. `default_driver_name`,
  123. `load_capacity`,
  124. `vehicle_status`,
  125. `photo_urls`,
  126. `tenant_no`,
  127. `order_num`,
  128. `remark`,
  129. `create_by`,
  130. `create_dept_id`,
  131. `create_time`,
  132. `update_by`,
  133. `update_time`,
  134. `del_flag`
  135. )
  136. SELECT
  137. 'A1000000000000000000000000F0A002',
  138. 'self',
  139. src.`carrier_id`,
  140. src.`carrier_name`,
  141. '叉车',
  142. '-',
  143. NULL,
  144. NULL,
  145. NULL,
  146. 'available',
  147. '',
  148. 'shanxia2.0',
  149. NULL,
  150. '加油登记虚拟车辆(非上路车牌)',
  151. 'd3000000000000000000000000000001',
  152. 'b13c2be2-4e71-11f1-9f47-00163e3bdd96',
  153. '2000-01-01 00:00:01',
  154. NULL,
  155. NOW(),
  156. 0
  157. FROM (
  158. SELECT `carrier_id`, `carrier_name`
  159. FROM `pl_vehicle`
  160. WHERE `vehicle_type` = 'self'
  161. AND `del_flag` = 0
  162. AND `carrier_id` IS NOT NULL
  163. AND `carrier_id` <> ''
  164. ORDER BY `create_time` ASC
  165. LIMIT 1
  166. ) src
  167. WHERE NOT EXISTS (
  168. SELECT 1 FROM `pl_vehicle` WHERE `license_plate` = '叉车'
  169. );
  170. -- 4) 执行后自检(应返回 2 行,且 create_time 为 2000-01-01)
  171. -- SELECT id, license_plate, vehicle_type, vehicle_status, order_num, create_time, del_flag
  172. -- FROM pl_vehicle
  173. -- WHERE license_plate IN ('油桶', '叉车')
  174. -- ORDER BY create_time DESC;