20260625_pl_freight_settlement_approval.sql 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. -- =============================================================================
  2. -- 运费结算完善 · 审批表 + 字典 + 按钮权限
  3. -- 执行库:shanxia2.0 门户库
  4. -- 说明:可重复执行
  5. -- =============================================================================
  6. SET NAMES utf8mb4;
  7. -- -----------------------------------------------------------------------------
  8. -- 1. 审批记录表
  9. -- -----------------------------------------------------------------------------
  10. CREATE TABLE IF NOT EXISTS `pl_freight_settlement_approval` (
  11. `id` varchar(64) NOT NULL COMMENT '主键ID',
  12. `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID',
  13. `step` int(11) NOT NULL DEFAULT 1 COMMENT '步骤序号',
  14. `step_name` varchar(50) DEFAULT NULL COMMENT '步骤名称',
  15. `approver_id` varchar(64) NOT NULL COMMENT '审批人ID',
  16. `approver_name` varchar(64) DEFAULT NULL COMMENT '审批人姓名',
  17. `approval_type` varchar(20) NOT NULL DEFAULT 'sequential' COMMENT 'sequential/parallel/or',
  18. `approval_result` varchar(20) NOT NULL DEFAULT 'pending' COMMENT 'pending/approved/rejected/skipped',
  19. `approval_opinion` varchar(500) DEFAULT NULL COMMENT '审批意见',
  20. `approval_time` datetime DEFAULT NULL COMMENT '审批时间',
  21. `is_current` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否当前节点',
  22. `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
  23. `order_num` int(11) DEFAULT NULL COMMENT '排序号',
  24. `remark` varchar(512) DEFAULT NULL COMMENT '备注',
  25. `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id',
  26. `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID',
  27. `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  28. `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id',
  29. `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  30. `del_flag` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除',
  31. PRIMARY KEY (`id`),
  32. KEY `idx_pl_fsa_settlement` (`settlement_id`, `del_flag`),
  33. KEY `idx_pl_fsa_approver` (`approver_id`, `approval_result`, `is_current`, `del_flag`)
  34. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费结算审批记录';
  35. -- -----------------------------------------------------------------------------
  36. -- 2. 结算状态字典
  37. -- -----------------------------------------------------------------------------
  38. INSERT INTO `sys_dict_data` (
  39. `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`,
  40. `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  41. ) VALUES
  42. (
  43. 'PL_SETTLEMENT_STATUS_PENDING', '草稿', 'pending', 'info', 'pl_settlement_status', 'shanxia2.0', 1,
  44. NULL, 'system', '', NOW(), NULL, NOW(), 0
  45. ),
  46. (
  47. 'PL_SETTLE_APPROVING', '审批中', 'approving', 'warning', 'pl_settlement_status', 'shanxia2.0', 2,
  48. NULL, 'system', '', NOW(), NULL, NOW(), 0
  49. ),
  50. (
  51. 'PL_SETTLE_APPROVED', '待发放', 'approved', 'primary', 'pl_settlement_status', 'shanxia2.0', 3,
  52. NULL, 'system', '', NOW(), NULL, NOW(), 0
  53. ),
  54. (
  55. 'PL_SETTLEMENT_STATUS_CONFIRMED', '已结算', 'confirmed', 'success', 'pl_settlement_status', 'shanxia2.0', 4,
  56. NULL, 'system', '', NOW(), NULL, NOW(), 0
  57. )
  58. ON DUPLICATE KEY UPDATE
  59. `dict_label` = VALUES(`dict_label`),
  60. `tag_type` = VALUES(`tag_type`),
  61. `order_num` = VALUES(`order_num`),
  62. `update_time` = NOW(),
  63. `del_flag` = 0;
  64. UPDATE `sys_dict_data`
  65. SET `del_flag` = 1, `update_time` = NOW()
  66. WHERE `dict_type` = 'pl_settlement_status'
  67. AND `dict_value` IN ('submitted')
  68. AND `del_flag` = 0;
  69. -- -----------------------------------------------------------------------------
  70. -- 3. 运费结算按钮权限(parent PL_FREIGHT)
  71. -- -----------------------------------------------------------------------------
  72. INSERT INTO `sys_menu` (
  73. `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`,
  74. `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`,
  75. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  76. ) VALUES
  77. ('PL_FREIGHT_Q', '查询', 'PL_FREIGHT', 'F', '', '', 'pl:freight:query', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  78. ('PL_FREIGHT_C', '组单', 'PL_FREIGHT', 'F', '', '', 'pl:freight:create', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  79. ('PL_FREIGHT_E', '编辑', 'PL_FREIGHT', 'F', '', '', 'pl:freight:edit', 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  80. ('PL_FREIGHT_S', '提交审批', 'PL_FREIGHT', 'F', '', '', 'pl:freight:submit', 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  81. ('PL_FREIGHT_A', '审批', 'PL_FREIGHT', 'F', '', '', 'pl:freight:approve', 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  82. ('PL_FREIGHT_W', '撤回', 'PL_FREIGHT', 'F', '', '', 'pl:freight:withdraw', 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', NOW(), NULL, NOW(), 0),
  83. ('PL_FREIGHT_D', '发放登记', 'PL_FREIGHT', 'F', '', '', 'pl:freight:disburse', 1, '1', '1', 'shanxia2.0', 7, NULL, 'system', '', NOW(), NULL, NOW(), 0)
  84. ON DUPLICATE KEY UPDATE
  85. `menu_name` = VALUES(`menu_name`),
  86. `parent_id` = VALUES(`parent_id`),
  87. `perms` = VALUES(`perms`),
  88. `update_time` = NOW(),
  89. `del_flag` = 0;
  90. -- 可选:为已有运费结算菜单的角色自动授权按钮
  91. INSERT INTO `sys_role_menu` (
  92. `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`,
  93. `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
  94. )
  95. SELECT
  96. REPLACE(UUID(), '-', ''),
  97. rm.`role_id`,
  98. m.`menu_id`,
  99. rm.`tenant_no`,
  100. m.`order_num`,
  101. 'pl freight buttons auto grant',
  102. 'system',
  103. '',
  104. NOW(),
  105. NULL,
  106. NOW(),
  107. 0
  108. FROM `sys_role_menu` rm
  109. INNER JOIN (
  110. SELECT 'PL_FREIGHT_Q' AS menu_id, 1 AS order_num UNION ALL
  111. SELECT 'PL_FREIGHT_C', 2 UNION ALL
  112. SELECT 'PL_FREIGHT_E', 3 UNION ALL
  113. SELECT 'PL_FREIGHT_S', 4 UNION ALL
  114. SELECT 'PL_FREIGHT_A', 5 UNION ALL
  115. SELECT 'PL_FREIGHT_W', 6 UNION ALL
  116. SELECT 'PL_FREIGHT_D', 7
  117. ) m ON 1 = 1
  118. WHERE rm.`menu_id` = 'PL_FREIGHT'
  119. AND rm.`del_flag` = 0
  120. AND NOT EXISTS (
  121. SELECT 1 FROM `sys_role_menu` x
  122. WHERE x.`role_id` = rm.`role_id` AND x.`menu_id` = m.`menu_id` AND x.`del_flag` = 0
  123. );
  124. SELECT `id`, `menu_name`, `perms` FROM `sys_menu`
  125. WHERE `id` LIKE 'PL_FREIGHT%' AND `del_flag` = 0 ORDER BY `order_num`;