提交
This commit is contained in:
1 parent
299609706c
commit
e46c0480d4
87 files changed
+11975
-15543
No files matched your search
@@ -1,163 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输计划 · 车辆/人员/证书重构 — 增量 DDL
|
||||
-- 日期: 2026-06-19
|
||||
-- 说明: 在已有 pl_ 表基础上新增/扩展,不删除 pl_driver(迁移后另脚本处理)
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 1. pl_personnel(人员主表)
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `pl_personnel` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID',
|
||||
`personnel_name` varchar(100) NOT NULL COMMENT '姓名',
|
||||
`phone_no` varchar(32) DEFAULT NULL COMMENT '手机号(非必填)',
|
||||
`age` int(11) DEFAULT NULL COMMENT '年龄',
|
||||
`id_card_no` varchar(32) DEFAULT NULL COMMENT '身份证号',
|
||||
`status` char(1) NOT NULL DEFAULT '1' COMMENT '状态 1-在职 0-停用',
|
||||
`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_tenant` (`tenant_no`),
|
||||
KEY `idx_phone` (`phone_no`),
|
||||
KEY `idx_personnel_name` (`personnel_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-人员表';
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 2. pl_cert(证书实例表)
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `pl_cert` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID',
|
||||
`owner_type` varchar(20) NOT NULL COMMENT '归属类型 vehicle-车辆 personnel-人员',
|
||||
`owner_id` varchar(64) NOT NULL COMMENT '归属主体ID',
|
||||
`cert_name` varchar(100) NOT NULL COMMENT '证书名称',
|
||||
`cert_no` varchar(64) DEFAULT NULL COMMENT '证号',
|
||||
`expire_date` date DEFAULT NULL COMMENT '有效期',
|
||||
`remind_days` int(11) NOT NULL DEFAULT 30 COMMENT '提前提醒天数',
|
||||
`attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL(逗号分隔)',
|
||||
`status` varchar(20) NOT NULL DEFAULT 'valid' COMMENT '状态 valid-有效 expired-已过期 revoked-已作废',
|
||||
`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_tenant` (`tenant_no`),
|
||||
KEY `idx_owner` (`owner_type`, `owner_id`),
|
||||
KEY `idx_expire_date` (`expire_date`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-证书表';
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 3. pl_vehicle_personnel(车辆-人员关联,由 pl_vehicle_driver 演进)
|
||||
-- -----------------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `pl_vehicle_personnel` (
|
||||
`id` varchar(64) NOT NULL COMMENT '主键ID',
|
||||
`vehicle_id` varchar(64) NOT NULL COMMENT '车辆ID',
|
||||
`personnel_id` varchar(64) NOT NULL COMMENT '人员ID',
|
||||
`role` varchar(20) NOT NULL DEFAULT 'driver' COMMENT '角色 driver-司机 escort-押运员',
|
||||
`is_default` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否默认司机 0-否 1-是',
|
||||
`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_vehicle_id` (`vehicle_id`),
|
||||
KEY `idx_personnel_id` (`personnel_id`),
|
||||
KEY `idx_tenant` (`tenant_no`),
|
||||
KEY `idx_vehicle_role` (`vehicle_id`, `role`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆-人员关联表';
|
||||
|
||||
-- 若存在旧表 pl_vehicle_driver 且无 pl_vehicle_personnel 数据,由迁移脚本处理
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 4. pl_document_reminder 扩展字段
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- cert_id
|
||||
SET @col_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'cert_id'
|
||||
);
|
||||
SET @sql = IF(@col_exists = 0,
|
||||
'ALTER TABLE `pl_document_reminder` ADD COLUMN `cert_id` varchar(64) DEFAULT NULL COMMENT ''证书ID'' AFTER `id`',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- owner_type
|
||||
SET @col_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_type'
|
||||
);
|
||||
SET @sql = IF(@col_exists = 0,
|
||||
'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_type` varchar(20) DEFAULT NULL COMMENT ''归属类型 vehicle/personnel'' AFTER `cert_id`',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- owner_id
|
||||
SET @col_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_id'
|
||||
);
|
||||
SET @sql = IF(@col_exists = 0,
|
||||
'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_id` varchar(64) DEFAULT NULL COMMENT ''归属主体ID'' AFTER `owner_type`',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- owner_label
|
||||
SET @col_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_label'
|
||||
);
|
||||
SET @sql = IF(@col_exists = 0,
|
||||
'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_label` varchar(200) DEFAULT NULL COMMENT ''归属展示名(车牌/姓名)'' AFTER `owner_id`',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- driver_id 改为可空(兼容车辆主体提醒)
|
||||
SET @col_nullable = (
|
||||
SELECT IS_NULLABLE FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'driver_id'
|
||||
);
|
||||
SET @sql = IF(@col_nullable = 'NO',
|
||||
'ALTER TABLE `pl_document_reminder` MODIFY COLUMN `driver_id` varchar(64) DEFAULT NULL COMMENT ''司机/人员ID(兼容)''',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SET @col_nullable = (
|
||||
SELECT IS_NULLABLE FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'driver_name'
|
||||
);
|
||||
SET @sql = IF(@col_nullable = 'NO',
|
||||
'ALTER TABLE `pl_document_reminder` MODIFY COLUMN `driver_name` varchar(100) DEFAULT NULL COMMENT ''司机/人员姓名(兼容)''',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- document_type 扩长以存 cert_name
|
||||
ALTER TABLE `pl_document_reminder`
|
||||
MODIFY COLUMN `document_type` varchar(100) NOT NULL COMMENT '证件类型/证书名称';
|
||||
|
||||
-- 新索引
|
||||
SET @idx_exists = (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND INDEX_NAME = 'idx_cert_id'
|
||||
);
|
||||
SET @sql = IF(@idx_exists = 0,
|
||||
'ALTER TABLE `pl_document_reminder` ADD KEY `idx_cert_id` (`cert_id`)',
|
||||
'SELECT 1');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
@@ -1,146 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输计划 · 人员/证书字典与菜单更新
|
||||
-- 日期: 2026-06-19
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 1. 字典类型 pl_personnel_role(人员角色)
|
||||
-- -----------------------------------------------------------------------------
|
||||
INSERT INTO `sys_dict_type` (
|
||||
`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
'PL_PERSONNEL_ROLE', '运输人员角色', 'pl_personnel_role', 'shanxia2.0', 20,
|
||||
'运输计划-人员角色 driver/escort', 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_type` WHERE `dict_type` = 'pl_personnel_role' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_ROLE_DRIVER', '司机', 'driver', 'primary', 'pl_personnel_role', 'shanxia2.0', 1,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_personnel_role' AND `dict_value` = 'driver' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_ROLE_ESCORT', '押运员', 'escort', 'warning', 'pl_personnel_role', 'shanxia2.0', 2,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_personnel_role' AND `dict_value` = 'escort' AND `del_flag` = 0
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 2. 字典类型 pl_cert_name(证书名称引导)
|
||||
-- -----------------------------------------------------------------------------
|
||||
INSERT INTO `sys_dict_type` (
|
||||
`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
'PL_CERT_NAME', '运输证书名称', 'pl_cert_name', 'shanxia2.0', 21,
|
||||
'运输计划-证书名称引导录入', 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_type` WHERE `dict_type` = 'pl_cert_name' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_01', '行驶证', '行驶证', 'success', 'pl_cert_name', 'shanxia2.0', 1,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '行驶证' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_02', '道路运输证', '道路运输证', 'primary', 'pl_cert_name', 'shanxia2.0', 2,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '道路运输证' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_03', '驾驶证', '驾驶证', 'primary', 'pl_cert_name', 'shanxia2.0', 3,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '驾驶证' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_04', '押运员证', '押运员证', 'warning', 'pl_cert_name', 'shanxia2.0', 4,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '押运员证' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_05', '危化品从业资格证', '危化品从业资格证', 'danger', 'pl_cert_name', 'shanxia2.0', 5,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '危化品从业资格证' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_06', '保险单', '保险单', 'info', 'pl_cert_name', 'shanxia2.0', 6,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '保险单' 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`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT 'PL_CERT_07', '健康证', '健康证', 'info', 'pl_cert_name', 'shanxia2.0', 7,
|
||||
NULL, 'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '健康证' AND `del_flag` = 0
|
||||
);
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 3. 菜单:司机管理 → 人员管理,path driver → personnel
|
||||
-- -----------------------------------------------------------------------------
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`menu_name` = '人员管理',
|
||||
`path` = 'personnel',
|
||||
`component` = 'pl/personnel/index',
|
||||
`update_time` = NOW()
|
||||
WHERE `id` = 'PL_DRIVER' AND `del_flag` = 0;
|
||||
@@ -1,211 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输计划 · 车辆/人员/证书重构 — 数据迁移
|
||||
-- 日期: 2026-06-19
|
||||
-- 前置: 先执行 docs/sql/20260619_pl_personnel_cert.sql
|
||||
-- 说明: 从 pl_driver / pl_vehicle_driver 迁移至新表;可重复执行(幂等)
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 1. pl_driver → pl_personnel(保留 id)
|
||||
-- -----------------------------------------------------------------------------
|
||||
INSERT IGNORE INTO `pl_personnel` (
|
||||
`id`, `personnel_name`, `phone_no`, `age`, `id_card_no`, `status`,
|
||||
`tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
d.`id`,
|
||||
d.`driver_name`,
|
||||
NULLIF(TRIM(d.`phone_no`), ''),
|
||||
NULL,
|
||||
d.`id_card_no`,
|
||||
'1',
|
||||
d.`tenant_no`,
|
||||
d.`order_num`,
|
||||
d.`remark`,
|
||||
d.`create_by`,
|
||||
d.`create_dept_id`,
|
||||
d.`create_time`,
|
||||
d.`update_by`,
|
||||
d.`update_time`,
|
||||
d.`del_flag`
|
||||
FROM `pl_driver` d
|
||||
WHERE d.`del_flag` = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `pl_personnel` p WHERE p.`id` = d.`id`);
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 2. 司机证件 → pl_cert(owner_type=personnel, remind_days=30)
|
||||
-- 证书 id 使用确定性前缀,便于幂等
|
||||
-- -----------------------------------------------------------------------------
|
||||
|
||||
-- 驾驶证
|
||||
INSERT INTO `pl_cert` (
|
||||
`id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`,
|
||||
`status`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
CONCAT(d.`id`, '-dl'),
|
||||
'personnel',
|
||||
d.`id`,
|
||||
'驾驶证',
|
||||
d.`driving_license_no`,
|
||||
d.`driving_license_expire`,
|
||||
30,
|
||||
'valid',
|
||||
d.`tenant_no`,
|
||||
d.`order_num`,
|
||||
d.`remark`,
|
||||
d.`create_by`,
|
||||
d.`create_dept_id`,
|
||||
d.`create_time`,
|
||||
d.`update_by`,
|
||||
d.`update_time`,
|
||||
0
|
||||
FROM `pl_driver` d
|
||||
WHERE d.`del_flag` = 0
|
||||
AND d.`driving_license_expire` IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-dl'));
|
||||
|
||||
-- 行驶证(原存于司机表,迁移后挂人员;业务上可后续调整到车辆)
|
||||
INSERT INTO `pl_cert` (
|
||||
`id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`,
|
||||
`status`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
CONCAT(d.`id`, '-vl'),
|
||||
'personnel',
|
||||
d.`id`,
|
||||
'行驶证',
|
||||
d.`vehicle_license_no`,
|
||||
d.`vehicle_license_expire`,
|
||||
30,
|
||||
'valid',
|
||||
d.`tenant_no`,
|
||||
d.`order_num`,
|
||||
d.`remark`,
|
||||
d.`create_by`,
|
||||
d.`create_dept_id`,
|
||||
d.`create_time`,
|
||||
d.`update_by`,
|
||||
d.`update_time`,
|
||||
0
|
||||
FROM `pl_driver` d
|
||||
WHERE d.`del_flag` = 0
|
||||
AND d.`vehicle_license_expire` IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-vl'));
|
||||
|
||||
-- 危化品从业资格证
|
||||
INSERT INTO `pl_cert` (
|
||||
`id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`,
|
||||
`status`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
CONCAT(d.`id`, '-hc'),
|
||||
'personnel',
|
||||
d.`id`,
|
||||
'危化品从业资格证',
|
||||
d.`hazmat_cert_no`,
|
||||
d.`hazmat_cert_expire`,
|
||||
30,
|
||||
'valid',
|
||||
d.`tenant_no`,
|
||||
d.`order_num`,
|
||||
d.`remark`,
|
||||
d.`create_by`,
|
||||
d.`create_dept_id`,
|
||||
d.`create_time`,
|
||||
d.`update_by`,
|
||||
d.`update_time`,
|
||||
0
|
||||
FROM `pl_driver` d
|
||||
WHERE d.`del_flag` = 0
|
||||
AND d.`hazmat_cert_expire` IS NOT NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-hc'));
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 3. pl_vehicle_driver → pl_vehicle_personnel(driver_id → personnel_id, role=driver)
|
||||
-- -----------------------------------------------------------------------------
|
||||
INSERT IGNORE INTO `pl_vehicle_personnel` (
|
||||
`id`, `vehicle_id`, `personnel_id`, `role`, `is_default`,
|
||||
`tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
vd.`id`,
|
||||
vd.`vehicle_id`,
|
||||
vd.`driver_id`,
|
||||
'driver',
|
||||
vd.`is_default`,
|
||||
vd.`tenant_no`,
|
||||
vd.`order_num`,
|
||||
vd.`remark`,
|
||||
vd.`create_by`,
|
||||
vd.`create_dept_id`,
|
||||
vd.`create_time`,
|
||||
vd.`update_by`,
|
||||
vd.`update_time`,
|
||||
vd.`del_flag`
|
||||
FROM `pl_vehicle_driver` vd
|
||||
WHERE vd.`del_flag` = 0
|
||||
AND NOT EXISTS (SELECT 1 FROM `pl_vehicle_personnel` vp WHERE vp.`id` = vd.`id`);
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 4. 从 pl_vehicle.default_driver_id 修正 is_default(每车最多一条 is_default=1)
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 先清零所有关联的 is_default
|
||||
UPDATE `pl_vehicle_personnel` vp
|
||||
INNER JOIN `pl_vehicle` v ON v.`id` = vp.`vehicle_id` AND v.`del_flag` = 0
|
||||
SET vp.`is_default` = 0
|
||||
WHERE vp.`del_flag` = 0
|
||||
AND vp.`role` = 'driver'
|
||||
AND v.`default_driver_id` IS NOT NULL
|
||||
AND v.`default_driver_id` != '';
|
||||
|
||||
-- 按车辆 default_driver_id 设置默认司机
|
||||
UPDATE `pl_vehicle_personnel` vp
|
||||
INNER JOIN `pl_vehicle` v ON v.`id` = vp.`vehicle_id` AND v.`del_flag` = 0
|
||||
SET vp.`is_default` = 1
|
||||
WHERE vp.`del_flag` = 0
|
||||
AND vp.`role` = 'driver'
|
||||
AND vp.`personnel_id` = v.`default_driver_id`
|
||||
AND v.`default_driver_id` IS NOT NULL
|
||||
AND v.`default_driver_id` != '';
|
||||
|
||||
-- 若 default_driver_id 有值但尚无关联行,补插一条
|
||||
INSERT IGNORE INTO `pl_vehicle_personnel` (
|
||||
`id`, `vehicle_id`, `personnel_id`, `role`, `is_default`,
|
||||
`tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
)
|
||||
SELECT
|
||||
CONCAT('mig-vp-', v.`id`, '-', v.`default_driver_id`),
|
||||
v.`id`,
|
||||
v.`default_driver_id`,
|
||||
'driver',
|
||||
1,
|
||||
v.`tenant_no`,
|
||||
NULL,
|
||||
'迁移自 default_driver_id',
|
||||
v.`create_by`,
|
||||
v.`create_dept_id`,
|
||||
v.`create_time`,
|
||||
v.`update_by`,
|
||||
v.`update_time`,
|
||||
0
|
||||
FROM `pl_vehicle` v
|
||||
WHERE v.`del_flag` = 0
|
||||
AND v.`default_driver_id` IS NOT NULL
|
||||
AND v.`default_driver_id` != ''
|
||||
AND EXISTS (SELECT 1 FROM `pl_personnel` p WHERE p.`id` = v.`default_driver_id` AND p.`del_flag` = 0)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `pl_vehicle_personnel` vp
|
||||
WHERE vp.`vehicle_id` = v.`id`
|
||||
AND vp.`personnel_id` = v.`default_driver_id`
|
||||
AND vp.`role` = 'driver'
|
||||
AND vp.`del_flag` = 0
|
||||
);
|
||||
@@ -1,4 +0,0 @@
|
||||
-- CRM 产品:易制毒 / 易制爆属性(运输计划证件校验前置)
|
||||
ALTER TABLE `crm_product`
|
||||
ADD COLUMN `is_toxic` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制毒 0-否 1-是' AFTER `tax_rate`,
|
||||
ADD COLUMN `is_explosive` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制爆 0-否 1-是' AFTER `is_toxic`;
|
||||
@@ -1,10 +0,0 @@
|
||||
-- 将 CRM 产品表中所有未删除产品的易制毒、易制爆属性批量设为「是」
|
||||
-- 前置:已执行 docs/sql/20260620_crm_product_hazard_flags.sql 添加字段
|
||||
-- 说明:仅更新 del_flag=0 的有效产品;0=否,1=是
|
||||
|
||||
UPDATE `crm_product`
|
||||
SET
|
||||
`is_toxic` = 1,
|
||||
`is_explosive` = 1,
|
||||
`update_time` = NOW()
|
||||
WHERE `del_flag` = 0;
|
||||
@@ -1,27 +0,0 @@
|
||||
-- 安排运输 + 司机免登录 + 地磅联动
|
||||
-- 2026-06-20
|
||||
|
||||
ALTER TABLE pl_transport
|
||||
ADD COLUMN driver_access_token VARCHAR(64) NULL COMMENT '司机免登录访问令牌' AFTER qr_expire_date;
|
||||
|
||||
CREATE UNIQUE INDEX uk_pl_transport_driver_token ON pl_transport(driver_access_token);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS pl_transport_db_link (
|
||||
id VARCHAR(64) NOT NULL PRIMARY KEY COMMENT '主键ID',
|
||||
transport_id VARCHAR(64) NOT NULL COMMENT '运输单ID',
|
||||
plan_id VARCHAR(64) NOT NULL COMMENT '运输计划ID',
|
||||
plan_product_id VARCHAR(64) NOT NULL COMMENT '计划产品行ID',
|
||||
db_purchase_plan_id VARCHAR(64) NOT NULL COMMENT '地磅计划ID',
|
||||
db_inventory_id VARCHAR(64) NOT NULL COMMENT '出入库单ID',
|
||||
tenant_no VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号',
|
||||
order_num INT NULL COMMENT '排序号',
|
||||
remark VARCHAR(512) NULL COMMENT '备注',
|
||||
create_by VARCHAR(64) 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) NULL COMMENT '更新人id',
|
||||
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
del_flag TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除',
|
||||
KEY idx_pl_tdb_link_transport (transport_id),
|
||||
KEY idx_pl_tdb_link_plan (plan_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输-地磅出入库关联';
|
||||
@@ -1,19 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输管理 · 一级菜单更名 + 隐藏子菜单(运输管理、库存台账)
|
||||
-- 日期: 2026-06-20
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`menu_name` = '运输管理',
|
||||
`remark` = '运输管理父菜单',
|
||||
`update_time` = NOW()
|
||||
WHERE `id` = 'PL_MENU_ROOT' AND `del_flag` = 0;
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`visible` = '0',
|
||||
`update_time` = NOW()
|
||||
WHERE `id` IN ('PL_TRANSPORT', 'PL_INVENTORY') AND `del_flag` = 0;
|
||||
@@ -1,20 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输计划 · 危化品证上传菜单
|
||||
-- 日期: 2026-06-20
|
||||
-- =============================================================================
|
||||
|
||||
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_PLAN_CERT', '危化品证上传', 'PL_MENU_ROOT', 'C', 'plan-cert', 'pl/plan-cert/index',
|
||||
'pl:plan-cert:list', 1, '1', '1', 'shanxia2.0', 11, '危化品购买证/运输证上传',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_PLAN_CERT' AND `del_flag` = 0
|
||||
);
|
||||
@@ -1,22 +0,0 @@
|
||||
-- 运输计划 · 新增计划弹窗 — 物流/产品/运输量字段增量
|
||||
-- 执行前请备份;MySQL 5.7+
|
||||
|
||||
ALTER TABLE `pl_plan`
|
||||
ADD COLUMN `pickup_address` varchar(500) DEFAULT NULL COMMENT '取货地址' AFTER `has_freight`,
|
||||
ADD COLUMN `pickup_time` datetime DEFAULT NULL COMMENT '取货时间' AFTER `pickup_address`,
|
||||
ADD COLUMN `pickup_notes` varchar(500) DEFAULT NULL COMMENT '取货注意事项' AFTER `pickup_time`,
|
||||
ADD COLUMN `destination_address` varchar(500) DEFAULT NULL COMMENT '目的地地址' AFTER `pickup_notes`,
|
||||
ADD COLUMN `delivery_time` datetime DEFAULT NULL COMMENT '送达时间' AFTER `destination_address`,
|
||||
ADD COLUMN `destination_notes` varchar(500) DEFAULT NULL COMMENT '目的地注意事项' AFTER `delivery_time`;
|
||||
|
||||
ALTER TABLE `pl_plan_product`
|
||||
ADD COLUMN `category_name` varchar(200) DEFAULT NULL COMMENT '产品分类' AFTER `unit`,
|
||||
ADD COLUMN `package_spec` varchar(200) DEFAULT NULL COMMENT '包装规格' AFTER `category_name`,
|
||||
ADD COLUMN `delivery_method` varchar(50) DEFAULT NULL COMMENT '送货方式' AFTER `package_spec`,
|
||||
ADD COLUMN `quantity` decimal(15,3) DEFAULT NULL COMMENT '合同数量' AFTER `delivery_method`,
|
||||
ADD COLUMN `tax_price` decimal(15,4) DEFAULT NULL COMMENT '含税单价' AFTER `quantity`,
|
||||
ADD COLUMN `tax_amount` decimal(15,2) DEFAULT NULL COMMENT '税费' AFTER `tax_price`,
|
||||
ADD COLUMN `tax_subtotal` decimal(15,2) DEFAULT NULL COMMENT '含税总价' AFTER `tax_amount`;
|
||||
|
||||
ALTER TABLE `pl_transport`
|
||||
ADD COLUMN `transport_qty` decimal(15,3) DEFAULT NULL COMMENT '运输量(按重量计费基数)' AFTER `unit`;
|
||||
@@ -1,5 +0,0 @@
|
||||
-- 运输计划产品明细 · 新增实际数量字段
|
||||
-- 执行前请备份;MySQL 5.7+
|
||||
|
||||
ALTER TABLE `pl_plan_product`
|
||||
ADD COLUMN `actual_qty` decimal(15,3) DEFAULT NULL COMMENT '实际数量' AFTER `quantity`;
|
||||
@@ -1,11 +0,0 @@
|
||||
-- 回滚:20260620_pl_plan_transport_prefill.sql
|
||||
-- 撤销 pl_plan 上误加的运输预选冗余字段(改由 pl_transport 草稿子表承载)
|
||||
-- 执行前请备份;MySQL 5.7+
|
||||
|
||||
ALTER TABLE `pl_plan`
|
||||
DROP COLUMN `has_invoice`,
|
||||
DROP COLUMN `freight_price`,
|
||||
DROP COLUMN `transport_qty`,
|
||||
DROP COLUMN `freight_type`,
|
||||
DROP COLUMN `distance_km`,
|
||||
DROP COLUMN `carrier_id`;
|
||||
@@ -1,27 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 运输计划 · 山峡自有车辆菜单(更名 + 增量)
|
||||
-- 日期: 2026-06-20
|
||||
-- =============================================================================
|
||||
|
||||
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_SELF_VEHICLE', '山峡自有车辆', 'PL_MENU_ROOT', 'C', 'self-vehicle', 'pl/self-vehicle/index',
|
||||
'pl:self-vehicle:list', 1, '1', '1', 'shanxia2.0', 4, '自有类型车辆管理',
|
||||
'system', '', NOW(), NULL, NOW(), 0
|
||||
FROM DUAL
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_SELF_VEHICLE' AND `del_flag` = 0
|
||||
);
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`menu_name` = '山峡自有车辆',
|
||||
`remark` = '自有类型车辆管理',
|
||||
`update_time` = NOW()
|
||||
WHERE `id` = 'PL_SELF_VEHICLE' AND `del_flag` = 0;
|
||||
@@ -1,24 +0,0 @@
|
||||
-- =============================================================================
|
||||
-- 一体化门户 · 隐藏控制台菜单
|
||||
-- 日期: 2026-06-20
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`visible` = '0',
|
||||
`update_time` = NOW()
|
||||
WHERE `id` = 'DSH000000000000000000000000000001' AND `del_flag` = 0;
|
||||
|
||||
UPDATE `sys_menu`
|
||||
SET
|
||||
`visible` = '0',
|
||||
`update_time` = NOW()
|
||||
WHERE `menu_name` = '控制台'
|
||||
AND `parent_id` IN (
|
||||
SELECT `id` FROM (
|
||||
SELECT `id` FROM `sys_menu` WHERE `menu_name` IN ('Web管理端', '管理端') AND `del_flag` = 0 LIMIT 1
|
||||
) AS web_root
|
||||
)
|
||||
AND `del_flag` = 0;
|
||||
@@ -1,23 +0,0 @@
|
||||
-- 报销申请单:报销日期 + 标题序号(同日报销日期下序号唯一,支持高并发)
|
||||
-- 兼容 MySQL 5.7(不支持 DEFAULT (CURRENT_DATE) 表达式默认值)
|
||||
|
||||
ALTER TABLE `bx_reimburse_apply`
|
||||
ADD COLUMN `reimburse_date` date NULL COMMENT '报销日期' AFTER `title`,
|
||||
ADD COLUMN `title_seq` int(11) DEFAULT NULL COMMENT '标题序号(同租户同报销日期下自增,自动生成标题时使用)' AFTER `reimburse_date`;
|
||||
|
||||
UPDATE `bx_reimburse_apply`
|
||||
SET `reimburse_date` = DATE(`create_time`)
|
||||
WHERE `reimburse_date` IS NULL;
|
||||
|
||||
ALTER TABLE `bx_reimburse_apply`
|
||||
MODIFY COLUMN `reimburse_date` date NOT NULL COMMENT '报销日期';
|
||||
|
||||
UPDATE `bx_reimburse_apply`
|
||||
SET `title_seq` = CAST(RIGHT(`title`, 3) AS UNSIGNED)
|
||||
WHERE `title_seq` IS NULL
|
||||
AND `title` REGEXP '报销单[0-9]{11}$'
|
||||
AND RIGHT(`title`, 3) REGEXP '^[0-9]{3}$';
|
||||
|
||||
ALTER TABLE `bx_reimburse_apply`
|
||||
ADD UNIQUE KEY `uk_tenant_reimburse_date_title_seq` (`tenant_no`, `reimburse_date`, `title_seq`),
|
||||
ADD KEY `idx_reimburse_date` (`reimburse_date`);
|
||||
@@ -0,0 +1,20 @@
|
||||
-- 移除地磅「车牌管理」独立主数据表及菜单(车牌统一使用运输管理 pl_vehicle)
|
||||
DROP TABLE IF EXISTS `db_vehicle`;
|
||||
|
||||
DELETE FROM `sys_role_menu`
|
||||
WHERE `menu_id` IN (
|
||||
'DB00000000000000000000000000006',
|
||||
'DB10000000000000000000000000014',
|
||||
'DB10000000000000000000000000015',
|
||||
'DB10000000000000000000000000016',
|
||||
'DB10000000000000000000000000017'
|
||||
);
|
||||
|
||||
DELETE FROM `sys_menu`
|
||||
WHERE `id` IN (
|
||||
'DB00000000000000000000000000006',
|
||||
'DB10000000000000000000000000014',
|
||||
'DB10000000000000000000000000015',
|
||||
'DB10000000000000000000000000016',
|
||||
'DB10000000000000000000000000017'
|
||||
);
|
||||
+491
-570
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user