Files
shanxia2.0/docs/sql/20260625_pl_freight_settlement_approval.sql
T
2026-06-25 08:06:32 +08:00

136 lines
6.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- 运费结算完善 · 审批表 + 字典 + 按钮权限
-- 执行库: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`;