This commit is contained in:
zlwu committed 2026-10-02 09:28:00 +08:00
1 parent 7f1f60e259
commit c55f22a603
855 files changed
+4758807 -1373323

No files matched your search

@@ -0,0 +1,51 @@
-- 作废/取消可选原因独立字段(void-cancel-reason-required)
-- 2026-09-30
-- 原因可空;作废成功时仍写 time/by
-- CRM 报价单
ALTER TABLE `crm_quote`
ADD COLUMN `invalid_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `version_no`,
ADD COLUMN `invalid_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `invalid_reason`,
ADD COLUMN `invalid_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `invalid_time`;
-- 运输计划
ALTER TABLE `pl_plan`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `erp_entered`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 加油登记
ALTER TABLE `pl_vehicle_fuel_register`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `status`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 充值申请
ALTER TABLE `pl_vehicle_recharge_apply`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `status`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 维保申请
ALTER TABLE `pl_vehicle_maintenance_apply`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `status`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 尿素申请
ALTER TABLE `pl_vehicle_urea_apply`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `status`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 运费结算
ALTER TABLE `pl_freight_settlement`
ADD COLUMN `cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `settlement_status`,
ADD COLUMN `cancel_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `cancel_reason`,
ADD COLUMN `cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `cancel_time`;
-- 地磅单
ALTER TABLE `db_weighing_slip`
ADD COLUMN `void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因' AFTER `is_voided`,
ADD COLUMN `void_time` datetime DEFAULT NULL COMMENT '作废时间' AFTER `void_reason`,
ADD COLUMN `void_by` varchar(64) DEFAULT NULL COMMENT '作废人ID' AFTER `void_time`;
@@ -1,82 +0,0 @@
-- 车辆充值菜单改名:恢复加油语义 + 审批/审批人配置命名与排序
-- Spec: docs/superpowers/specs/2026-09-26-pl-vehicle-recharge-restore-fuel-design.md
UPDATE sys_menu
SET menu_name = 'ETC/加油充值申请',
update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_APPLY'
AND del_flag = 0;
UPDATE sys_menu
SET menu_name = 'ETC/加油充值发放管理',
update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_RECORD'
AND del_flag = 0;
UPDATE sys_menu
SET menu_name = 'ETC/加油充值审批',
update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_APPROVAL'
AND del_flag = 0;
UPDATE sys_menu
SET menu_name = 'ETC/加油充值审批人配置',
update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_WF'
AND del_flag = 0;
-- 将「ETC/加油充值审批人配置」排到「加油信息汇总」之后(可重复执行)
SET @fuel_ord := (
SELECT `order_num` FROM `sys_menu`
WHERE `id` = 'PL_VEH_FUEL_SUM' AND `del_flag` = 0
LIMIT 1
);
SET @wf_ord := (
SELECT `order_num` FROM `sys_menu`
WHERE `id` = 'PL_VEH_RECHARGE_WF' AND `del_flag` = 0
LIMIT 1
);
-- 当前在加油信息汇总之前:先收拢中间空位,再挂到汇总后一格
UPDATE `sys_menu`
SET `order_num` = `order_num` - 1,
`update_time` = NOW()
WHERE @fuel_ord IS NOT NULL
AND @wf_ord IS NOT NULL
AND @wf_ord < @fuel_ord
AND `parent_id` = 'PL_GROUP_VEHICLE'
AND `del_flag` = 0
AND `id` <> 'PL_VEH_RECHARGE_WF'
AND `order_num` > @wf_ord
AND `order_num` <= @fuel_ord;
UPDATE `sys_menu`
SET `order_num` = @fuel_ord,
`update_time` = NOW()
WHERE @fuel_ord IS NOT NULL
AND @wf_ord IS NOT NULL
AND @wf_ord < @fuel_ord
AND `id` = 'PL_VEH_RECHARGE_WF'
AND `del_flag` = 0;
-- 当前已在汇总之后但未紧跟:先腾出汇总后一格,再写入
UPDATE `sys_menu`
SET `order_num` = `order_num` + 1,
`update_time` = NOW()
WHERE @fuel_ord IS NOT NULL
AND @wf_ord IS NOT NULL
AND @wf_ord > @fuel_ord + 1
AND `parent_id` = 'PL_GROUP_VEHICLE'
AND `del_flag` = 0
AND `id` <> 'PL_VEH_RECHARGE_WF'
AND `order_num` > @fuel_ord
AND `order_num` < @wf_ord;
UPDATE `sys_menu`
SET `order_num` = @fuel_ord + 1,
`update_time` = NOW()
WHERE @fuel_ord IS NOT NULL
AND @wf_ord IS NOT NULL
AND @wf_ord > @fuel_ord + 1
AND `id` = 'PL_VEH_RECHARGE_WF'
AND `del_flag` = 0;
@@ -1,8 +0,0 @@
-- 车辆充值模块恢复「加油」类型:重新启用字典项(不改菜单名、不删业务数据)
-- Spec: docs/superpowers/specs/2026-09-26-pl-vehicle-recharge-restore-fuel-design.md
UPDATE sys_dict_data
SET del_flag = 0,
remark = '充值类型:加油(油卡充值)',
update_time = NOW()
WHERE id = 'PL_RECHARGE_TYPE_FUEL';
@@ -1,436 +0,0 @@
-- 车辆 ETC/加油充值:可配置审批与财务发放登记
-- Spec: docs/superpowers/specs/2026-09-26-pl-vehicle-recharge-workflow-design.md
-- Plan Task 1: 结构 + 字典 + 菜单 + 流程种子 + 存量 pending 迁移
-- 可重复执行(列/菜单/字典/角色授权均做存在性判断)
SET NAMES utf8mb4;
-- =============================================================================
-- 1) bx_workflow_node.action_type
-- =============================================================================
SET @db := DATABASE();
SET @col_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 'bx_workflow_node'
AND COLUMN_NAME = 'action_type'
);
SET @sql := IF(
@col_exists = 0,
'ALTER TABLE `bx_workflow_node`
ADD COLUMN `action_type` varchar(20) NOT NULL DEFAULT ''approve''
COMMENT ''approve-审批 disburse-发放登记'' AFTER `approver_name`',
'SELECT ''bx_workflow_node.action_type already exists'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- =============================================================================
-- 2) pl_vehicle_recharge_apply:wf_id / current_node / approval_round + status 注释
-- =============================================================================
SET @col_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 'pl_vehicle_recharge_apply'
AND COLUMN_NAME = 'wf_id'
);
SET @sql := IF(
@col_exists = 0,
'ALTER TABLE `pl_vehicle_recharge_apply`
ADD COLUMN `wf_id` varchar(64) DEFAULT NULL COMMENT ''工作流定义ID'' AFTER `status`',
'SELECT ''pl_vehicle_recharge_apply.wf_id already exists'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @col_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 'pl_vehicle_recharge_apply'
AND COLUMN_NAME = 'current_node'
);
SET @sql := IF(
@col_exists = 0,
'ALTER TABLE `pl_vehicle_recharge_apply`
ADD COLUMN `current_node` varchar(64) DEFAULT NULL COMMENT ''当前节点ID'' AFTER `wf_id`',
'SELECT ''pl_vehicle_recharge_apply.current_node already exists'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @col_exists := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = @db
AND TABLE_NAME = 'pl_vehicle_recharge_apply'
AND COLUMN_NAME = 'approval_round'
);
SET @sql := IF(
@col_exists = 0,
'ALTER TABLE `pl_vehicle_recharge_apply`
ADD COLUMN `approval_round` int(11) NOT NULL DEFAULT 0 COMMENT ''当前审批轮次'' AFTER `current_node`',
'SELECT ''pl_vehicle_recharge_apply.approval_round already exists'' AS info'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
ALTER TABLE `pl_vehicle_recharge_apply`
MODIFY COLUMN `status` varchar(20) NOT NULL DEFAULT 'draft'
COMMENT 'draft-草稿 in_approval-审批中 rejected-已驳回 disbursed-已发放 cancelled-已作废';
-- =============================================================================
-- 3) 审批历史表
-- =============================================================================
CREATE TABLE IF NOT EXISTS `pl_vehicle_recharge_approval` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`apply_id` varchar(64) NOT NULL COMMENT '申请单ID',
`approval_round` int(11) NOT NULL DEFAULT 1 COMMENT '审批轮次',
`node_id` varchar(64) DEFAULT NULL COMMENT '节点ID快照',
`node_name` varchar(128) DEFAULT NULL COMMENT '节点名称快照',
`approver_id` varchar(64) NOT NULL COMMENT '审批人用户ID',
`approver_name` varchar(64) NOT NULL COMMENT '审批人姓名',
`approval_status` varchar(32) NOT NULL COMMENT 'approved/rejected/disbursed',
`approval_opinion` varchar(1024) DEFAULT NULL COMMENT '审批意见',
`approval_time` datetime NOT NULL 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` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除',
PRIMARY KEY (`id`),
KEY `idx_apply_id` (`apply_id`),
KEY `idx_tenant` (`tenant_no`),
KEY `idx_approver` (`approver_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆充值申请审批历史';
-- =============================================================================
-- 4) 流程定义 + 节点种子
-- =============================================================================
INSERT INTO `bx_workflow_def` (
`id`, `biz_type`, `wf_name`, `status`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `del_flag`
)
VALUES (
'PL_WF_VEHICLE_RECHARGE', 'vehicle_recharge', 'ETC/加油充值审批流程', 1,
'shanxia2.0', 0, '充值申请默认审批流程', 'system', '', NOW(), 0
)
ON DUPLICATE KEY UPDATE
`wf_name` = VALUES(`wf_name`),
`biz_type` = VALUES(`biz_type`),
`status` = VALUES(`status`),
`del_flag` = 0,
`remark` = VALUES(`remark`);
INSERT INTO `bx_workflow_node` (
`id`, `wf_id`, `node_name`, `node_order`, `approver_id`, `approver_name`,
`action_type`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `del_flag`
)
VALUES
(
'PL_WR_NODE_GM', 'PL_WF_VEHICLE_RECHARGE', '总经理审批', 1,
'56D1C9DA5F6747DDAD25C248A156A524', '吴九华', 'approve',
'shanxia2.0', 0, NULL, 'system', '', NOW(), 0
),
(
'PL_WR_NODE_FIN', 'PL_WF_VEHICLE_RECHARGE', '财务发放', 2,
'CC2EED9A86F44D11AFFD0AD381893093', '汪璇', 'disburse',
'shanxia2.0', 0, NULL, 'system', '', NOW(), 0
)
ON DUPLICATE KEY UPDATE
`wf_id` = VALUES(`wf_id`),
`node_name` = VALUES(`node_name`),
`node_order` = VALUES(`node_order`),
`approver_id` = VALUES(`approver_id`),
`approver_name` = VALUES(`approver_name`),
`action_type` = VALUES(`action_type`),
`del_flag` = 0;
-- =============================================================================
-- 5) 字典 pl_recharge_apply_status
-- 软停用旧 pending;补齐 draft/in_approval/rejected;保留 disbursed/cancelled
-- =============================================================================
UPDATE `sys_dict_data`
SET `del_flag` = 1,
`remark` = '充值审批改造:pending(待发放)已废弃,存量已迁移为 in_approval',
`update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_PENDING'
AND `dict_type` = 'pl_recharge_apply_status'
AND `del_flag` = 0;
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`, `del_flag`
)
SELECT
'PL_RECHARGE_APPLY_DRAFT', '草稿', 'draft', 'info', 'pl_recharge_apply_status',
'shanxia2.0', 1, NULL, 'system', '', NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_dict_data` WHERE `id` = 'PL_RECHARGE_APPLY_DRAFT'
);
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`, `del_flag`
)
SELECT
'PL_RECHARGE_APPLY_IN_APPROVAL', '审批中', 'in_approval', 'warning', 'pl_recharge_apply_status',
'shanxia2.0', 2, NULL, 'system', '', NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_dict_data` WHERE `id` = 'PL_RECHARGE_APPLY_IN_APPROVAL'
);
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`, `del_flag`
)
SELECT
'PL_RECHARGE_APPLY_REJECTED', '已驳回', 'rejected', 'danger', 'pl_recharge_apply_status',
'shanxia2.0', 3, NULL, 'system', '', NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_dict_data` WHERE `id` = 'PL_RECHARGE_APPLY_REJECTED'
);
UPDATE `sys_dict_data`
SET `dict_label` = '已发放',
`tag_type` = 'success',
`order_num` = 4,
`del_flag` = 0,
`update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_DISBURSED'
AND `dict_type` = 'pl_recharge_apply_status';
UPDATE `sys_dict_data`
SET `dict_label` = '已作废',
`tag_type` = 'info',
`order_num` = 5,
`del_flag` = 0,
`update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_CANCELLED'
AND `dict_type` = 'pl_recharge_apply_status';
-- 幂等:若上述 INSERT 因已存在跳过,仍校正文案/排序/启用态
UPDATE `sys_dict_data`
SET `dict_label` = '草稿', `tag_type` = 'info', `order_num` = 1, `del_flag` = 0, `update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_DRAFT';
UPDATE `sys_dict_data`
SET `dict_label` = '审批中', `tag_type` = 'warning', `order_num` = 2, `del_flag` = 0, `update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_IN_APPROVAL';
UPDATE `sys_dict_data`
SET `dict_label` = '已驳回', `tag_type` = 'danger', `order_num` = 3, `del_flag` = 0, `update_time` = NOW()
WHERE `id` = 'PL_RECHARGE_APPLY_REJECTED';
-- =============================================================================
-- 6) 菜单:ETC/加油充值审批 / ETC/加油充值审批人配置(挂 PL_GROUP_VEHICLE)
-- 排序:申请(1) → 审批(2) → 发放登记(3) → … → 加油信息汇总 → 审批人配置
-- 仅当发放登记仍为 order_num=2(首次)时整体后移,避免重复执行叠位
-- 审批人配置最终顺序由 2026-09-26-pl-vehicle-recharge-rename-menus.sql 对齐到加油信息汇总之后
-- =============================================================================
SET @record_ord := (
SELECT `order_num` FROM `sys_menu`
WHERE `id` = 'PL_VEH_RECHARGE_RECORD' AND `del_flag` = 0
LIMIT 1
);
UPDATE `sys_menu`
SET `order_num` = `order_num` + 2,
`update_time` = NOW()
WHERE @record_ord = 2
AND `parent_id` = 'PL_GROUP_VEHICLE'
AND `order_num` >= 2
AND `del_flag` = 0
AND `id` NOT IN ('PL_VEH_RECHARGE_APPROVAL', 'PL_VEH_RECHARGE_WF');
UPDATE `sys_menu`
SET `order_num` = 3, `update_time` = NOW()
WHERE `id` = 'PL_VEH_RECHARGE_RECORD' AND `del_flag` = 0;
-- ETC/加油充值审批(待办)
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`
)
SELECT
'PL_VEH_RECHARGE_APPROVAL', 'ETC/加油充值审批', 'PL_GROUP_VEHICLE', 'C',
'vehicle-recharge-approval', 'pl/vehicle-recharge-approval/index',
'pl:vehicle-recharge-approval:list', 1, '1', '1', 'shanxia2.0', 2, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VEH_RECHARGE_APPROVAL' AND `del_flag` = 0
);
UPDATE `sys_menu`
SET `menu_name` = 'ETC/加油充值审批',
`path` = 'vehicle-recharge-approval',
`component` = 'pl/vehicle-recharge-approval/index',
`perms` = 'pl:vehicle-recharge-approval:list',
`order_num` = 2,
`visible` = '1',
`status` = '1',
`update_time` = NOW()
WHERE `id` = 'PL_VEH_RECHARGE_APPROVAL' AND `del_flag` = 0;
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`
)
SELECT 'PL_VRAP_Q', '查询', 'PL_VEH_RECHARGE_APPROVAL', 'F', '', '',
'pl:vehicle-recharge-approval:query', 1, '1', '1', 'shanxia2.0', 1, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRAP_Q' AND `del_flag` = 0);
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`
)
SELECT 'PL_VRAP_A', '通过', 'PL_VEH_RECHARGE_APPROVAL', 'F', '', '',
'pl:vehicle-recharge-approval:approve', 1, '1', '1', 'shanxia2.0', 2, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRAP_A' AND `del_flag` = 0);
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`
)
SELECT 'PL_VRAP_J', '驳回', 'PL_VEH_RECHARGE_APPROVAL', 'F', '', '',
'pl:vehicle-recharge-approval:reject', 1, '1', '1', 'shanxia2.0', 3, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRAP_J' AND `del_flag` = 0);
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`
)
SELECT 'PL_VRAP_D', '发放', 'PL_VEH_RECHARGE_APPROVAL', 'F', '', '',
'pl:vehicle-recharge-approval:disburse', 1, '1', '1', 'shanxia2.0', 4, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRAP_D' AND `del_flag` = 0);
-- ETC/加油充值审批人配置(配置页;初始 order_num=4,最终由 rename-menus 迁到加油信息汇总之后)
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`
)
SELECT
'PL_VEH_RECHARGE_WF', 'ETC/加油充值审批人配置', 'PL_GROUP_VEHICLE', 'C',
'vehicle-recharge-workflow', 'pl/vehicle-recharge-workflow/index',
'pl:vehicle-recharge-workflow:list', 1, '1', '1', 'shanxia2.0', 4, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VEH_RECHARGE_WF' AND `del_flag` = 0
);
UPDATE `sys_menu`
SET `menu_name` = 'ETC/加油充值审批人配置',
`path` = 'vehicle-recharge-workflow',
`component` = 'pl/vehicle-recharge-workflow/index',
`perms` = 'pl:vehicle-recharge-workflow:list',
`order_num` = 4,
`visible` = '1',
`status` = '1',
`update_time` = NOW()
WHERE `id` = 'PL_VEH_RECHARGE_WF' AND `del_flag` = 0;
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`
)
SELECT 'PL_VRWF_Q', '查询', 'PL_VEH_RECHARGE_WF', 'F', '', '',
'pl:vehicle-recharge-workflow:query', 1, '1', '1', 'shanxia2.0', 1, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRWF_Q' AND `del_flag` = 0);
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`
)
SELECT 'PL_VRWF_E', '编辑', 'PL_VEH_RECHARGE_WF', 'F', '', '',
'pl:vehicle-recharge-workflow:edit', 1, '1', '1', 'shanxia2.0', 2, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRWF_E' AND `del_flag` = 0);
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`
)
SELECT 'PL_VRWF_S', '保存', 'PL_VEH_RECHARGE_WF', 'F', '', '',
'pl:vehicle-recharge-workflow:save', 1, '1', '1', 'shanxia2.0', 3, NULL,
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_VRWF_S' AND `del_flag` = 0);
-- 角色授权:已拥有充值申请(C 菜单或查询按钮)的角色同步获得新菜单
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
MD5(CONCAT(rm.role_id, '|', m.menu_id, '|pl-veh-recharge-wf|v1')),
rm.role_id,
m.menu_id,
IFNULL(NULLIF(rm.tenant_no, ''), 'shanxia2.0'),
0,
'充值审批改造:同步授权',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM (
SELECT DISTINCT `role_id`, `tenant_no`
FROM `sys_role_menu`
WHERE `menu_id` IN ('PL_VEH_RECHARGE_APPLY', 'PL_VRA_Q')
AND `del_flag` = 0
) rm
JOIN (
SELECT 'PL_VEH_RECHARGE_APPROVAL' AS menu_id UNION ALL
SELECT 'PL_VRAP_Q' UNION ALL
SELECT 'PL_VRAP_A' UNION ALL
SELECT 'PL_VRAP_J' UNION ALL
SELECT 'PL_VRAP_D' UNION ALL
SELECT 'PL_VEH_RECHARGE_WF' UNION ALL
SELECT 'PL_VRWF_Q' UNION ALL
SELECT 'PL_VRWF_E' UNION ALL
SELECT 'PL_VRWF_S'
) m
WHERE 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
);
-- =============================================================================
-- 7) 存量:pending 且无发放记录 → 审批中(落在财务发放节点)
-- =============================================================================
UPDATE `pl_vehicle_recharge_apply` a
LEFT JOIN `pl_vehicle_recharge_record` r
ON r.apply_id = a.id AND r.del_flag = 0
SET a.status = 'in_approval',
a.wf_id = 'PL_WF_VEHICLE_RECHARGE',
a.current_node = 'PL_WR_NODE_FIN',
a.approval_round = 1,
a.update_time = NOW()
WHERE a.del_flag = 0
AND a.status = 'pending'
AND r.id IS NULL;
@@ -1,89 +0,0 @@
-- 小程序:运输管理 → ETC/加油充值申请(角色「司机」「押运员」)
-- 可重复执行(NOT EXISTS 防重)
SET NAMES utf8mb4;
-- 测试库补角色(生产已有则跳过)
INSERT INTO `sys_role` (
`id`, `role_name`, `data_scope`, `status`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
)
SELECT
'MINI_ROLE_DRIVER', '司机', '1', '1', 'shanxia2.0', 60, '小程序司机端',
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_role` WHERE `role_name` = '司机' AND `del_flag` = 0
);
INSERT INTO `sys_role` (
`id`, `role_name`, `data_scope`, `status`, `tenant_no`, `order_num`, `remark`,
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
)
SELECT
'MINI_ROLE_ESCORT', '押运员', '1', '1', 'shanxia2.0', 61, '小程序押运端',
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_role` WHERE `role_name` = '押运员' AND `del_flag` = 0
);
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`
)
SELECT
'MINI_PL_ROOT', '运输管理', '1', 'M', '/mini/pl', NULL, NULL,
1, '1', '1', 'shanxia2.0', 4, '小程序运输管理',
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'MINI_PL_ROOT' AND `del_flag` = 0
);
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`
)
SELECT
'MINI_PL_VEHICLE_RECHARGE_APPLY', 'ETC/加油充值申请', 'MINI_PL_ROOT', 'C',
'vehicle-recharge-apply', NULL,
'mini:pl:vehicleRechargeApply:list',
1, '1', '1', 'shanxia2.0', 2, '小程序司机/押运 ETC/加油充值申请',
'system', '', NOW(), NULL, NOW(), 0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'MINI_PL_VEHICLE_RECHARGE_APPLY' AND `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
MD5(CONCAT(r.id, '|', m.menu_id, '|mini-pl-veh-recharge-apply|v1')),
r.id,
m.menu_id,
IFNULL(NULLIF(r.tenant_no, ''), 'shanxia2.0'),
0,
'小程序 ETC/加油充值申请',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM `sys_role` r
JOIN (
SELECT '1' AS menu_id UNION ALL
SELECT 'MINI_PL_ROOT' UNION ALL
SELECT 'MINI_PL_VEHICLE_RECHARGE_APPLY'
) m
WHERE r.del_flag = 0
AND r.role_name IN ('司机', '押运员')
AND EXISTS (SELECT 1 FROM `sys_menu` sm WHERE sm.id = m.menu_id AND sm.del_flag = 0)
AND NOT EXISTS (
SELECT 1 FROM `sys_role_menu` x
WHERE x.role_id = r.id AND x.menu_id = m.menu_id AND x.del_flag = 0
);
@@ -1,16 +0,0 @@
-- 小程序菜单改名:ETC加油充值申请 → ETC/加油充值申请(与管理端命名对齐)
-- 可重复执行
UPDATE `sys_menu`
SET `menu_name` = 'ETC/加油充值申请',
`remark` = '小程序司机/押运 ETC/加油充值申请',
`update_time` = NOW()
WHERE `id` = 'MINI_PL_VEHICLE_RECHARGE_APPLY'
AND `del_flag` = 0;
UPDATE `sys_role_menu`
SET `remark` = '小程序 ETC/加油充值申请',
`update_time` = NOW()
WHERE `menu_id` = 'MINI_PL_VEHICLE_RECHARGE_APPLY'
AND `del_flag` = 0
AND (`remark` IS NULL OR `remark` LIKE '%ETC加油充值申请%');
@@ -1,46 +0,0 @@
-- 将 ETC/加油充值 申请、审批、发放管理 菜单(含按钮)授权给「管理员」角色
-- 可重复执行(NOT EXISTS 防重)
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
MD5(CONCAT(r.id, '|', m.menu_id, '|pl-veh-recharge-admin|v1')),
r.id,
m.menu_id,
IFNULL(NULLIF(r.tenant_no, ''), 'shanxia2.0'),
0,
'充值三菜单:授权管理员',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM `sys_role` r
JOIN (
SELECT 'PL_VEH_RECHARGE_APPLY' AS menu_id UNION ALL
SELECT 'PL_VRA_Q' UNION ALL
SELECT 'PL_VRA_A' UNION ALL
SELECT 'PL_VRA_E' UNION ALL
SELECT 'PL_VRA_R' UNION ALL
SELECT 'PL_VRA_C' UNION ALL
SELECT 'PL_VEH_RECHARGE_APPROVAL' UNION ALL
SELECT 'PL_VRAP_Q' UNION ALL
SELECT 'PL_VRAP_A' UNION ALL
SELECT 'PL_VRAP_J' UNION ALL
SELECT 'PL_VRAP_D' UNION ALL
SELECT 'PL_VEH_RECHARGE_RECORD' UNION ALL
SELECT 'PL_VRR_Q' UNION ALL
SELECT 'PL_VRR_A' UNION ALL
SELECT 'PL_VRR_E' UNION ALL
SELECT 'PL_VRR_R'
) m
WHERE r.del_flag = 0
AND r.role_name = '管理员'
AND EXISTS (SELECT 1 FROM `sys_menu` sm WHERE sm.id = m.menu_id AND sm.del_flag = 0)
AND NOT EXISTS (
SELECT 1 FROM `sys_role_menu` x
WHERE x.role_id = r.id AND x.menu_id = m.menu_id AND x.del_flag = 0
);
@@ -1,8 +0,0 @@
-- 菜单改名:ETC/加油充值发放登记 → ETC/加油充值发放管理
-- 减少与「ETC/加油充值审批」(财务末节点发放主路径)的命名混淆
UPDATE sys_menu
SET menu_name = 'ETC/加油充值发放管理',
update_time = NOW()
WHERE id = 'PL_VEH_RECHARGE_RECORD'
AND del_flag = 0;
@@ -1,65 +0,0 @@
-- 运输管理:合同详情查看产品价格(按钮权限)
-- 挂在【运输计划】下,四页共用;并授权给「管理员」「超级管理员」角色
-- 可重复执行(NOT EXISTS 防重)
SET NAMES utf8mb4;
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`
)
SELECT
'PL_CONTRACT_VIEW_PRODUCT_PRICE',
'合同详情查看产品价格',
'PL_PLAN',
'F',
'',
NULL,
'pl:contract:view-product-price',
1,
'1',
'1',
'shanxia2.0',
21,
'运输计划/归档/合同完善/危化品证上传:合同详情弹窗展示产品单价与金额',
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_CONTRACT_VIEW_PRODUCT_PRICE' AND `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
MD5(CONCAT(r.id, '|PL_CONTRACT_VIEW_PRODUCT_PRICE|pl-contract-view-price|v1')),
r.id,
'PL_CONTRACT_VIEW_PRODUCT_PRICE',
IFNULL(NULLIF(r.tenant_no, ''), 'shanxia2.0'),
0,
CONCAT('合同详情查看产品价格:授权', r.role_name),
'system',
'',
NOW(),
NULL,
NOW(),
0
FROM `sys_role` r
WHERE r.del_flag = 0
AND r.role_name IN ('管理员', '超级管理员')
AND EXISTS (
SELECT 1 FROM `sys_menu` sm
WHERE sm.id = 'PL_CONTRACT_VIEW_PRODUCT_PRICE' AND sm.del_flag = 0
)
AND NOT EXISTS (
SELECT 1 FROM `sys_role_menu` x
WHERE x.role_id = r.id
AND x.menu_id = 'PL_CONTRACT_VIEW_PRODUCT_PRICE'
AND x.del_flag = 0
);
+21
View File
@@ -12459,6 +12459,9 @@ CREATE TABLE `crm_quote` (
`attachments` varchar(1000) DEFAULT NULL COMMENT '附件(多个用逗号分隔)',
`template_content` longtext COMMENT '报价单模板内容(富文本HTML)',
`version_no` int(11) DEFAULT '0' COMMENT '乐观锁版本号',
`invalid_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`invalid_time` datetime DEFAULT NULL COMMENT '作废时间',
`invalid_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号(公共)',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
@@ -22400,6 +22403,9 @@ CREATE TABLE `db_weighing_slip` (
`weighing_point` varchar(255) DEFAULT '山峡地磅' COMMENT '称重点',
`current_quantity` double DEFAULT NULL COMMENT '本次量(kg)',
`is_voided` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否作废(0=否,1=是)',
`void_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`void_time` datetime DEFAULT NULL COMMENT '作废时间',
`void_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
@@ -25022,6 +25028,9 @@ CREATE TABLE `pl_freight_settlement` (
`invoice_date` date DEFAULT NULL COMMENT '开票日期',
`invoice_attachment_urls` text COMMENT '发票附件URLs,逗号分隔',
`settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认',
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`cancel_time` datetime DEFAULT NULL COMMENT '作废时间',
`cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
@@ -25783,6 +25792,9 @@ CREATE TABLE `pl_plan` (
`hazard_cert_ready_by` varchar(64) DEFAULT NULL COMMENT '危化品证书确认人',
`hazard_cert_ready_time` datetime DEFAULT NULL COMMENT '危化品证书确认时间',
`erp_entered` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已录入ERP 0-否 1-是',
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`cancel_time` datetime DEFAULT NULL COMMENT '作废时间',
`cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
`remark` varchar(512) DEFAULT NULL COMMENT '备注',
@@ -27899,6 +27911,9 @@ CREATE TABLE `pl_vehicle_maintenance_apply` (
`shop_address` varchar(500) DEFAULT NULL COMMENT '维保店铺地址',
`attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL,逗号分隔',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT 'pending-待处理 processed-已处理 cancelled-已作废',
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`cancel_time` datetime DEFAULT NULL COMMENT '作废时间',
`cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
@@ -28093,6 +28108,9 @@ CREATE TABLE `pl_vehicle_recharge_apply` (
`attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL,逗号分隔',
`applicant_id` varchar(64) NOT NULL COMMENT '申请人用户ID',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT 'pending-待发放 disbursed-已发放 cancelled-已作废',
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`cancel_time` datetime DEFAULT NULL COMMENT '作废时间',
`cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,
@@ -28171,6 +28189,9 @@ CREATE TABLE `pl_vehicle_urea_apply` (
`apply_amount` decimal(10,2) NOT NULL COMMENT '申请金额(元)',
`attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL,逗号分隔',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT 'pending-待发放 disbursed-已发放 cancelled-已作废',
`cancel_reason` varchar(500) DEFAULT NULL COMMENT '作废原因',
`cancel_time` datetime DEFAULT NULL COMMENT '作废时间',
`cancel_by` varchar(64) DEFAULT NULL COMMENT '作废人ID',
`tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0',
`order_num` int(11) DEFAULT NULL,
`remark` varchar(512) DEFAULT NULL,