This commit is contained in:
zlwu committed 2026-06-21 09:19:07 +08:00
1 parent c3be9d1dce
commit 299609706c
328 files changed
+144899 -13873

No files matched your search

+163
View File
@@ -0,0 +1,163 @@
-- =============================================================================
-- 运输计划 · 车辆/人员/证书重构 — 增量 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;
@@ -0,0 +1,146 @@
-- =============================================================================
-- 运输计划 · 人员/证书字典与菜单更新
-- 日期: 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;
@@ -0,0 +1,211 @@
-- =============================================================================
-- 运输计划 · 车辆/人员/证书重构 — 数据迁移
-- 日期: 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
);
@@ -0,0 +1,4 @@
-- 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`;
@@ -0,0 +1,10 @@
-- 将 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;
+27
View File
@@ -0,0 +1,27 @@
-- 安排运输 + 司机免登录 + 地磅联动
-- 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='运输-地磅出入库关联';
+19
View File
@@ -0,0 +1,19 @@
-- =============================================================================
-- 运输管理 · 一级菜单更名 + 隐藏子菜单(运输管理、库存台账)
-- 日期: 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;
+20
View File
@@ -0,0 +1,20 @@
-- =============================================================================
-- 运输计划 · 危化品证上传菜单
-- 日期: 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
);
@@ -0,0 +1,22 @@
-- 运输计划 · 新增计划弹窗 — 物流/产品/运输量字段增量
-- 执行前请备份;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`;
@@ -0,0 +1,5 @@
-- 运输计划产品明细 · 新增实际数量字段
-- 执行前请备份;MySQL 5.7+
ALTER TABLE `pl_plan_product`
ADD COLUMN `actual_qty` decimal(15,3) DEFAULT NULL COMMENT '实际数量' AFTER `quantity`;
@@ -0,0 +1,11 @@
-- 回滚: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`;
@@ -0,0 +1,27 @@
-- =============================================================================
-- 运输计划 · 山峡自有车辆菜单(更名 + 增量)
-- 日期: 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;
@@ -0,0 +1,24 @@
-- =============================================================================
-- 一体化门户 · 隐藏控制台菜单
-- 日期: 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;
@@ -0,0 +1,23 @@
-- 报销申请单:报销日期 + 标题序号(同日报销日期下序号唯一,支持高并发)
-- 兼容 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`);
+620
View File
@@ -0,0 +1,620 @@
-- =============================================================================
-- 运输计划管理模块 DDL
-- 生成时间: 2026-06-11
-- 说明: pl_ 前缀,所有计划相关表
-- =============================================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- -----------------------------------------------------------------------------
-- 1. 基础数据:承运商、车辆、人员、证书
-- -----------------------------------------------------------------------------
-- ----------------------------
-- Table structure for pl_carrier (承运商表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_carrier`;
CREATE TABLE `pl_carrier` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`carrier_name` varchar(200) NOT NULL COMMENT '承运商名称',
`contact_name` varchar(100) DEFAULT NULL COMMENT '联系人',
`contact_phone` 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_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='承运商表';
-- ----------------------------
-- Table structure for pl_vehicle (车辆表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_vehicle`;
CREATE TABLE `pl_vehicle` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`vehicle_type` varchar(20) NOT NULL COMMENT '车辆类型 self-自有 carrier-承运商',
`carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID(类型为承运商时必填)',
`carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称(冗余)',
`license_plate` varchar(20) NOT NULL COMMENT '车牌号',
`load_capacity` decimal(10,2) DEFAULT NULL COMMENT '载重(吨)',
`vehicle_status` varchar(20) NOT NULL DEFAULT 'available' COMMENT '车辆状态 available-可用 maintaining-维修中 scrapped-报废',
`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`),
UNIQUE KEY `uk_license_plate` (`license_plate`),
KEY `idx_tenant` (`tenant_no`),
KEY `idx_vehicle_type` (`vehicle_type`),
KEY `idx_carrier_id` (`carrier_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆表';
-- ----------------------------
-- Table structure for pl_personnel (人员表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_personnel`;
CREATE TABLE `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='运输计划-人员表';
-- ----------------------------
-- Table structure for pl_cert (证书表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_cert`;
CREATE TABLE `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='运输计划-证书表';
-- ----------------------------
-- Table structure for pl_vehicle_personnel (车辆-人员关联表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_vehicle_personnel`;
CREATE TABLE `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='车辆-人员关联表';
-- -----------------------------------------------------------------------------
-- 2. 计划管理:计划主表、产品明细、变更记录
-- -----------------------------------------------------------------------------
-- ----------------------------
-- Table structure for pl_plan (计划主表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_plan`;
CREATE TABLE `pl_plan` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`plan_no` varchar(32) NOT NULL COMMENT '计划订单编号 SXDDHYYYYMMDD######',
`plan_date` date NOT NULL COMMENT '计划日期',
`belongs_company` varchar(20) NOT NULL COMMENT '归属公司 shanxia-安庆山峡 yundong-安徽云栋',
`plan_type` varchar(20) NOT NULL COMMENT '单据类型 direct-直销单 inbound-入库单 outbound-出库单',
`follow_status` varchar(30) NOT NULL DEFAULT 'draft' COMMENT '跟进状态',
`transport_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '运输安排状态 pending-待安排 arranged-已安排',
`archive_status` varchar(20) NOT NULL DEFAULT 'unarchived' COMMENT '归档状态 unarchived-未归档 archived-已归档',
`complete_status` varchar(10) NOT NULL DEFAULT 'no' COMMENT '完成状态 yes-是 no-否',
`contract_id` varchar(64) DEFAULT NULL COMMENT 'CRM合同ID',
`contract_no` varchar(50) DEFAULT NULL COMMENT '合同编号',
`supplier_id` varchar(64) DEFAULT NULL COMMENT '供应商ID',
`supplier_name` varchar(200) DEFAULT NULL COMMENT '供应商名称',
`destination_id` varchar(64) DEFAULT NULL COMMENT '目的地ID',
`destination_name` varchar(200) DEFAULT NULL COMMENT '目的地名称',
`customer_id` varchar(64) DEFAULT NULL COMMENT '客户ID',
`customer_name` varchar(200) DEFAULT NULL COMMENT '客户名称',
`contact_name` varchar(100) DEFAULT NULL COMMENT '联系人',
`contact_phone` varchar(32) DEFAULT NULL COMMENT '联系电话',
`party_a` varchar(200) DEFAULT NULL COMMENT '甲方',
`party_b` varchar(200) DEFAULT NULL COMMENT '乙方',
`contract_start_date` date DEFAULT NULL COMMENT '合同开始日期',
`contract_end_date` date DEFAULT NULL COMMENT '合同结束日期',
`delivery_method` varchar(20) DEFAULT NULL COMMENT '送货方式 self_pick-山峡自提 one_ticket-一票制 customer_pick-客户自提',
`settlement_method` varchar(50) DEFAULT NULL COMMENT '结算方式',
`has_freight` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否有运输费用 0-否 1-是',
`transport_id` varchar(64) DEFAULT NULL COMMENT '运输ID',
`transport_no` varchar(32) DEFAULT NULL COMMENT '运输编号',
`vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID',
`license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号',
`driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID',
`driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名',
`total_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '计划总金额',
`freight_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运费合计',
`notify_message` text COMMENT '通知信息(标准模板)',
`follow_user_id` varchar(64) DEFAULT NULL COMMENT '跟进人ID',
`follow_user_name` varchar(100) DEFAULT 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`),
UNIQUE KEY `uk_plan_no` (`plan_no`),
KEY `idx_tenant` (`tenant_no`),
KEY `idx_plan_type` (`plan_type`),
KEY `idx_follow_status` (`follow_status`),
KEY `idx_plan_date` (`plan_date`),
KEY `idx_contract_id` (`contract_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划主表';
-- ----------------------------
-- Table structure for pl_plan_product (计划产品明细表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_plan_product`;
CREATE TABLE `pl_plan_product` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`plan_id` varchar(64) NOT NULL COMMENT '计划ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_no` varchar(50) NOT NULL COMMENT '产品编号',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`model` varchar(100) DEFAULT NULL COMMENT '规格型号',
`unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位',
`is_explosive` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制爆 0-否 1-是',
`is_toxic` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制毒 0-否 1-是',
`purchase_cert_url` varchar(500) DEFAULT NULL COMMENT '购买证URL',
`transport_cert_url` varchar(500) DEFAULT NULL COMMENT '运输证URL',
`inbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '入库预估数',
`inbound_qty` decimal(15,3) DEFAULT NULL COMMENT '入库数',
`inbound_price` decimal(15,4) DEFAULT NULL COMMENT '入库价',
`inbound_amount` decimal(15,2) DEFAULT NULL COMMENT '入库金额',
`outbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '出库预估数',
`outbound_qty` decimal(15,3) DEFAULT NULL COMMENT '出库数',
`outbound_price` decimal(15,4) DEFAULT NULL COMMENT '出库单价',
`outbound_amount` decimal(15,2) DEFAULT 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_plan_id` (`plan_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划产品明细表';
-- ----------------------------
-- Table structure for pl_plan_change (计划变更记录表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_plan_change`;
CREATE TABLE `pl_plan_change` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`plan_id` varchar(64) NOT NULL COMMENT '计划ID',
`change_type` varchar(30) NOT NULL COMMENT '变更类型',
`change_content` text COMMENT '变更内容',
`change_user_id` varchar(64) DEFAULT NULL COMMENT '变更人ID',
`change_user_name` varchar(100) DEFAULT 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_plan_id` (`plan_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划变更记录表';
-- -----------------------------------------------------------------------------
-- 3. 运输管理:运输表、审批记录
-- -----------------------------------------------------------------------------
-- ----------------------------
-- Table structure for pl_transport (运输表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_transport`;
CREATE TABLE `pl_transport` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`transport_no` varchar(32) NOT NULL COMMENT '运输编号 SXYS######',
`vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID',
`license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号',
`driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID',
`driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名',
`driver_phone` varchar(32) DEFAULT NULL COMMENT '司机电话',
`carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID',
`carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称',
`transport_medium` varchar(100) DEFAULT NULL COMMENT '运输介质',
`start_point` varchar(200) DEFAULT NULL COMMENT '运输起点',
`end_point` varchar(200) DEFAULT NULL COMMENT '运输终点',
`distance_km` decimal(10,2) DEFAULT NULL COMMENT '运输公里数',
`unit` varchar(20) DEFAULT NULL COMMENT '计量单位 吨/趟',
`freight_price` decimal(15,4) DEFAULT NULL COMMENT '运输单价',
`freight_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运输费用',
`freight_type` varchar(20) NOT NULL DEFAULT 'by_weight' COMMENT '运费计算方式 by_weight-按重量 by_trip-按趟次',
`has_invoice` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否开票 0-否 1-是',
`qr_code` varchar(500) DEFAULT NULL COMMENT '二维码内容',
`qr_expire_date` date DEFAULT NULL COMMENT '二维码有效期',
`driver_access_token` varchar(64) DEFAULT NULL COMMENT '司机免登录访问令牌',
`transport_status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT '运输状态 draft-草稿 pending-待执行 executing-执行中 completed-已完成 cancelled-已取消',
`approval_status` varchar(20) NOT NULL DEFAULT 'none' COMMENT '审批状态 none-无需 pending-审批中 approved-已通过 rejected-已拒绝',
`feedback_time` datetime DEFAULT NULL COMMENT '回传时间',
`feedback_qty` decimal(15,3) DEFAULT NULL COMMENT '回传数量',
`feedback_images` text COMMENT '回传图片URLs(JSON数组)',
`feedback_remark` varchar(500) DEFAULT 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`),
UNIQUE KEY `uk_transport_no` (`transport_no`),
KEY `idx_tenant` (`tenant_no`),
KEY `idx_transport_status` (`transport_status`),
KEY `idx_vehicle_id` (`vehicle_id`),
KEY `idx_driver_id` (`driver_id`),
UNIQUE KEY `uk_pl_transport_driver_token` (`driver_access_token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输表';
-- ----------------------------
-- Table structure for pl_transport_db_link (运输-地磅出入库关联)
-- ----------------------------
DROP TABLE IF EXISTS `pl_transport_db_link`;
CREATE TABLE `pl_transport_db_link` (
`id` varchar(64) NOT NULL 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(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_pl_tdb_link_transport` (`transport_id`),
KEY `idx_pl_tdb_link_plan` (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输-地磅出入库关联';
-- ----------------------------
-- Table structure for pl_plan_transport (计划-运输关联表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_plan_transport`;
CREATE TABLE `pl_plan_transport` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`plan_id` varchar(64) NOT NULL COMMENT '计划ID',
`transport_id` varchar(64) NOT 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 '备注',
`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_plan_id` (`plan_id`),
KEY `idx_transport_id` (`transport_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划-运输关联表';
-- ----------------------------
-- Table structure for pl_transport_approval (运输审批记录表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_transport_approval`;
CREATE TABLE `pl_transport_approval` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`transport_id` varchar(64) NOT NULL COMMENT '运输ID',
`approver_id` varchar(64) NOT NULL COMMENT '审批人ID',
`approver_name` varchar(100) NOT NULL COMMENT '审批人姓名',
`approval_order` int(11) NOT NULL COMMENT '审批顺序',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '审批状态 pending-待审批 approved-已通过 rejected-已拒绝',
`comment` varchar(500) DEFAULT NULL COMMENT '审批意见',
`approval_time` datetime DEFAULT 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_transport_id` (`transport_id`),
KEY `idx_approver_id` (`approver_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输审批记录表';
-- -----------------------------------------------------------------------------
-- 4. 运费结算
-- -----------------------------------------------------------------------------
-- ----------------------------
-- Table structure for pl_freight_settlement (运费结算表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_freight_settlement`;
CREATE TABLE `pl_freight_settlement` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`settlement_no` varchar(32) NOT NULL COMMENT '结算单编号',
`total_freight` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运费合计',
`invoice_amount` decimal(15,2) DEFAULT NULL COMMENT '发票金额',
`invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号',
`invoice_date` date DEFAULT NULL COMMENT '开票日期',
`settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认',
`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`),
UNIQUE KEY `uk_settlement_no` (`settlement_no`),
KEY `idx_tenant` (`tenant_no`),
KEY `idx_settlement_status` (`settlement_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费结算表';
-- ----------------------------
-- Table structure for pl_freight_settlement_transport (结算单-运输关联表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_freight_settlement_transport`;
CREATE TABLE `pl_freight_settlement_transport` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`settlement_id` varchar(64) NOT NULL COMMENT '结算单ID',
`transport_id` varchar(64) NOT NULL COMMENT '运输ID',
`freight_amount` decimal(15,2) 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_settlement_id` (`settlement_id`),
KEY `idx_transport_id` (`transport_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算单-运输关联表';
-- ----------------------------
-- Table structure for pl_remittance_voucher (汇款凭证表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_remittance_voucher`;
CREATE TABLE `pl_remittance_voucher` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`settlement_id` varchar(64) NOT NULL COMMENT '结算单ID',
`voucher_no` varchar(32) DEFAULT NULL COMMENT '凭证编号',
`remittance_date` date DEFAULT NULL COMMENT '汇款日期',
`remittance_amount` decimal(15,2) DEFAULT NULL COMMENT '汇款金额',
`voucher_urls` text COMMENT '凭证文件URLs(JSON数组)',
`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_settlement_id` (`settlement_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='汇款凭证表';
-- -----------------------------------------------------------------------------
-- 5. 库存管理
-- -----------------------------------------------------------------------------
-- ----------------------------
-- Table structure for pl_inventory (库存表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_inventory`;
CREATE TABLE `pl_inventory` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_no` varchar(50) NOT NULL COMMENT '产品编号',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`model` varchar(100) DEFAULT NULL COMMENT '规格型号',
`unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位',
`stock_qty` decimal(15,3) NOT NULL DEFAULT 0.000 COMMENT '库存数量',
`stock_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '库存金额',
`low_stock_warning` decimal(15,3) DEFAULT NULL COMMENT '最低库存预警值',
`high_stock_warning` decimal(15,3) DEFAULT 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`),
UNIQUE KEY `uk_product_id` (`product_id`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表';
-- ----------------------------
-- Table structure for pl_inventory_transaction (库存流水表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_inventory_transaction`;
CREATE TABLE `pl_inventory_transaction` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`transaction_type` varchar(20) NOT NULL COMMENT '事务类型 inbound-入库 outbound-出库',
`plan_id` varchar(64) DEFAULT NULL COMMENT '计划ID',
`plan_no` varchar(32) DEFAULT NULL COMMENT '计划编号',
`qty` decimal(15,3) NOT NULL COMMENT '变动数量(正数入库/负数出库)',
`unit_price` decimal(15,4) NOT NULL COMMENT '单价',
`amount` decimal(15,2) NOT NULL COMMENT '金额',
`stock_after` decimal(15,3) 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_product_id` (`product_id`),
KEY `idx_transaction_type` (`transaction_type`),
KEY `idx_plan_id` (`plan_id`),
KEY `idx_create_time` (`create_time`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表';
-- ----------------------------
-- Table structure for pl_inventory_warning (库存预警表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_inventory_warning`;
CREATE TABLE `pl_inventory_warning` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`product_id` varchar(64) NOT NULL COMMENT '产品ID',
`product_name` varchar(200) NOT NULL COMMENT '产品名称',
`warning_type` varchar(20) NOT NULL COMMENT '预警类型 low-低于最低 high-高于最高',
`current_qty` decimal(15,3) NOT NULL COMMENT '当前库存',
`threshold_value` decimal(15,3) NOT NULL COMMENT '阈值',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理',
`resolve_time` datetime DEFAULT NULL COMMENT '处理时间',
`resolve_remark` varchar(500) DEFAULT 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_product_id` (`product_id`),
KEY `idx_warning_type` (`warning_type`),
KEY `idx_status` (`status`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存预警表';
-- ----------------------------
-- Table structure for pl_document_reminder (证件到期提醒表)
-- ----------------------------
DROP TABLE IF EXISTS `pl_document_reminder`;
CREATE TABLE `pl_document_reminder` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`cert_id` varchar(64) DEFAULT NULL COMMENT '证书ID',
`owner_type` varchar(20) DEFAULT NULL COMMENT '归属类型 vehicle/personnel',
`owner_id` varchar(64) DEFAULT NULL COMMENT '归属主体ID',
`owner_label` varchar(200) DEFAULT NULL COMMENT '归属展示名(车牌/姓名)',
`driver_id` varchar(64) DEFAULT NULL COMMENT '司机/人员ID(兼容)',
`driver_name` varchar(100) DEFAULT NULL COMMENT '司机/人员姓名(兼容)',
`document_type` varchar(100) NOT NULL COMMENT '证件类型/证书名称',
`document_no` varchar(50) DEFAULT NULL COMMENT '证件号',
`expire_date` date NOT NULL COMMENT '到期日期',
`days_remaining` int(11) NOT NULL COMMENT '剩余天数',
`status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理',
`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_cert_id` (`cert_id`),
KEY `idx_driver_id` (`driver_id`),
KEY `idx_document_type` (`document_type`),
KEY `idx_expire_date` (`expire_date`),
KEY `idx_status` (`status`),
KEY `idx_tenant` (`tenant_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='证件到期提醒表';
SET FOREIGN_KEY_CHECKS = 1;
-- =============================================================================
-- DDL 完成
-- 共计 16 张表(含 pl_cert;pl_driver 已由 pl_personnel 替代)
-- =============================================================================
+971 -1
View File
File diff suppressed because it is too large. Load diff