20260628_pl_freight_settlement_split_menu.sql 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. -- =============================================================================
  2. -- 运费结算 · 拆分为三菜单(结算 / 审批 / 财务发放)
  3. -- 执行库:shanxia2.0 门户库
  4. -- 说明:可重复执行;执行后重新登录刷新菜单
  5. -- =============================================================================
  6. SET NAMES utf8mb4;
  7. -- -----------------------------------------------------------------------------
  8. -- 1. 新增菜单
  9. -- -----------------------------------------------------------------------------
  10. INSERT INTO `sys_menu` (
  11. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  12. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  13. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  14. ) VALUES
  15. (
  16. 'PL_FREIGHT_APPROVAL', '运费结算审批', 'PL_MENU_ROOT', 'C',
  17. 'freight-approval', 'pl/freight-approval/index', 'pl:freight-approval:list',
  18. 1, '1', '1', 'shanxia2.0', 31, '待审批与已审批结算单',
  19. 'system', '', NOW(), NULL, NOW(), 0
  20. ),
  21. (
  22. 'PL_FREIGHT_APPROVAL_Q', '查询', 'PL_FREIGHT_APPROVAL', 'F',
  23. '', '', 'pl:freight-approval:query',
  24. 1, '1', '1', 'shanxia2.0', 1, NULL,
  25. 'system', '', NOW(), NULL, NOW(), 0
  26. ),
  27. (
  28. 'PL_FREIGHT_DISBURSE_MENU', '运费财务发放', 'PL_MENU_ROOT', 'C',
  29. 'freight-disburse', 'pl/freight-disburse/index', 'pl:freight-disburse:list',
  30. 1, '1', '1', 'shanxia2.0', 32, '待发放与已发放结算单',
  31. 'system', '', NOW(), NULL, NOW(), 0
  32. ),
  33. (
  34. 'PL_FREIGHT_DISBURSE_Q', '查询', 'PL_FREIGHT_DISBURSE_MENU', 'F',
  35. '', '', 'pl:freight-disburse:query',
  36. 1, '1', '1', 'shanxia2.0', 1, NULL,
  37. 'system', '', NOW(), NULL, NOW(), 0
  38. )
  39. ON DUPLICATE KEY UPDATE
  40. `menu_name` = VALUES(`menu_name`),
  41. `parent_id` = VALUES(`parent_id`),
  42. `menu_type` = VALUES(`menu_type`),
  43. `path` = VALUES(`path`),
  44. `component` = VALUES(`component`),
  45. `perms` = VALUES(`perms`),
  46. `visible` = VALUES(`visible`),
  47. `status` = VALUES(`status`),
  48. `order_num` = VALUES(`order_num`),
  49. `update_time` = NOW(),
  50. `del_flag` = 0;
  51. -- 运费结算菜单排序保持在审批、发放之前
  52. UPDATE `sys_menu`
  53. SET `order_num` = 30, `update_time` = NOW()
  54. WHERE `id` = 'PL_FREIGHT' AND `del_flag` = 0;
  55. -- -----------------------------------------------------------------------------
  56. -- 2. 为已拥有「运费结算」菜单的角色自动授权新菜单
  57. -- -----------------------------------------------------------------------------
  58. INSERT INTO `sys_role_menu` (
  59. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  60. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  61. )
  62. SELECT
  63. REPLACE(UUID(), '-', ''),
  64. rm.`role_id`,
  65. m.`menu_id`,
  66. rm.`tenant_no`,
  67. m.`order_num`,
  68. 'pl freight split menus auto grant',
  69. 'system',
  70. '',
  71. NOW(),
  72. NULL,
  73. NOW(),
  74. 0
  75. FROM `sys_role_menu` rm
  76. INNER JOIN (
  77. SELECT 'PL_FREIGHT_APPROVAL' AS menu_id, 31 AS order_num UNION ALL
  78. SELECT 'PL_FREIGHT_APPROVAL_Q', 1 UNION ALL
  79. SELECT 'PL_FREIGHT_DISBURSE_MENU', 32 UNION ALL
  80. SELECT 'PL_FREIGHT_DISBURSE_Q', 1
  81. ) m ON 1 = 1
  82. WHERE rm.`menu_id` = 'PL_FREIGHT'
  83. AND rm.`del_flag` = 0
  84. AND NOT EXISTS (
  85. SELECT 1 FROM `sys_role_menu` x
  86. WHERE x.`role_id` = rm.`role_id` AND x.`menu_id` = m.`menu_id` AND x.`del_flag` = 0
  87. );
  88. SELECT `id`, `menu_name`, `path`, `component`, `perms`, `order_num`
  89. FROM `sys_menu`
  90. WHERE `id` IN ('PL_FREIGHT', 'PL_FREIGHT_APPROVAL', 'PL_FREIGHT_DISBURSE_MENU')
  91. AND `del_flag` = 0
  92. ORDER BY `order_num`;