-- ============================================================================= -- 运费结算完善 · 审批表 + 字典 + 按钮权限 -- 执行库:shanxia2.0 门户库 -- 说明:可重复执行 -- ============================================================================= SET NAMES utf8mb4; -- ----------------------------------------------------------------------------- -- 1. 审批记录表 -- ----------------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `pl_freight_settlement_approval` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID', `step` int(11) NOT NULL DEFAULT 1 COMMENT '步骤序号', `step_name` varchar(50) DEFAULT NULL COMMENT '步骤名称', `approver_id` varchar(64) NOT NULL COMMENT '审批人ID', `approver_name` varchar(64) DEFAULT NULL COMMENT '审批人姓名', `approval_type` varchar(20) NOT NULL DEFAULT 'sequential' COMMENT 'sequential/parallel/or', `approval_result` varchar(20) NOT NULL DEFAULT 'pending' COMMENT 'pending/approved/rejected/skipped', `approval_opinion` varchar(500) DEFAULT NULL COMMENT '审批意见', `approval_time` datetime DEFAULT NULL COMMENT '审批时间', `is_current` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否当前节点', `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', `order_num` int(11) DEFAULT NULL COMMENT '排序号', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `del_flag` tinyint(4) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`), KEY `idx_pl_fsa_settlement` (`settlement_id`, `del_flag`), KEY `idx_pl_fsa_approver` (`approver_id`, `approval_result`, `is_current`, `del_flag`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费结算审批记录'; -- ----------------------------------------------------------------------------- -- 2. 结算状态字典 -- ----------------------------------------------------------------------------- INSERT INTO `sys_dict_data` ( `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) VALUES ( 'PL_SETTLEMENT_STATUS_PENDING', '草稿', 'pending', 'info', 'pl_settlement_status', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0 ), ( 'PL_SETTLE_APPROVING', '审批中', 'approving', 'warning', 'pl_settlement_status', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0 ), ( 'PL_SETTLE_APPROVED', '待发放', 'approved', 'primary', 'pl_settlement_status', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0 ), ( 'PL_SETTLEMENT_STATUS_CONFIRMED', '已结算', 'confirmed', 'success', 'pl_settlement_status', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0 ) ON DUPLICATE KEY UPDATE `dict_label` = VALUES(`dict_label`), `tag_type` = VALUES(`tag_type`), `order_num` = VALUES(`order_num`), `update_time` = NOW(), `del_flag` = 0; UPDATE `sys_dict_data` SET `del_flag` = 1, `update_time` = NOW() WHERE `dict_type` = 'pl_settlement_status' AND `dict_value` IN ('submitted') AND `del_flag` = 0; -- ----------------------------------------------------------------------------- -- 3. 运费结算按钮权限(parent PL_FREIGHT) -- ----------------------------------------------------------------------------- INSERT INTO `sys_menu` ( `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) VALUES ('PL_FREIGHT_Q', '查询', 'PL_FREIGHT', 'F', '', '', 'pl:freight:query', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_C', '组单', 'PL_FREIGHT', 'F', '', '', 'pl:freight:create', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_E', '编辑', 'PL_FREIGHT', 'F', '', '', 'pl:freight:edit', 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_S', '提交审批', 'PL_FREIGHT', 'F', '', '', 'pl:freight:submit', 1, '1', '1', 'shanxia2.0', 4, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_A', '审批', 'PL_FREIGHT', 'F', '', '', 'pl:freight:approve', 1, '1', '1', 'shanxia2.0', 5, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_W', '撤回', 'PL_FREIGHT', 'F', '', '', 'pl:freight:withdraw', 1, '1', '1', 'shanxia2.0', 6, NULL, 'system', '', NOW(), NULL, NOW(), 0), ('PL_FREIGHT_D', '发放登记', 'PL_FREIGHT', 'F', '', '', 'pl:freight:disburse', 1, '1', '1', 'shanxia2.0', 7, NULL, 'system', '', NOW(), NULL, NOW(), 0) ON DUPLICATE KEY UPDATE `menu_name` = VALUES(`menu_name`), `parent_id` = VALUES(`parent_id`), `perms` = VALUES(`perms`), `update_time` = NOW(), `del_flag` = 0; -- 可选:为已有运费结算菜单的角色自动授权按钮 INSERT INTO `sys_role_menu` ( `id`, `role_id`, `menu_id`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT REPLACE(UUID(), '-', ''), rm.`role_id`, m.`menu_id`, rm.`tenant_no`, m.`order_num`, 'pl freight buttons auto grant', 'system', '', NOW(), NULL, NOW(), 0 FROM `sys_role_menu` rm INNER JOIN ( SELECT 'PL_FREIGHT_Q' AS menu_id, 1 AS order_num UNION ALL SELECT 'PL_FREIGHT_C', 2 UNION ALL SELECT 'PL_FREIGHT_E', 3 UNION ALL SELECT 'PL_FREIGHT_S', 4 UNION ALL SELECT 'PL_FREIGHT_A', 5 UNION ALL SELECT 'PL_FREIGHT_W', 6 UNION ALL SELECT 'PL_FREIGHT_D', 7 ) m ON 1 = 1 WHERE rm.`menu_id` = 'PL_FREIGHT' AND rm.`del_flag` = 0 AND NOT EXISTS ( SELECT 1 FROM `sys_role_menu` x WHERE x.`role_id` = rm.`role_id` AND x.`menu_id` = m.`menu_id` AND x.`del_flag` = 0 ); SELECT `id`, `menu_name`, `perms` FROM `sys_menu` WHERE `id` LIKE 'PL_FREIGHT%' AND `del_flag` = 0 ORDER BY `order_num`;