This commit is contained in:
zlwu committed 2026-07-12 17:14:53 +08:00
1 parent ffc89d9b57
commit c2cba3e668
53 files changed
+11794 -6264

No files matched your search

@@ -0,0 +1,24 @@
-- pl_personnel 增加人员归属:self-山峡 carrier-非山峡
SET @col_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'pl_personnel'
AND COLUMN_NAME = 'personnel_affiliation'
);
SET @ddl := IF(
@col_exists = 0,
'ALTER TABLE `pl_personnel`
ADD COLUMN `personnel_affiliation` varchar(20) NOT NULL DEFAULT ''self''
COMMENT ''人员归属 self-山峡 carrier-非山峡''
AFTER `personnel_type`',
'SELECT ''personnel_affiliation already exists'' AS msg'
);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
UPDATE `pl_personnel`
SET `personnel_affiliation` = 'self'
WHERE `personnel_affiliation` IS NULL OR `personnel_affiliation` = '';
@@ -0,0 +1,52 @@
-- pl_personnel 增加人员类型;历史数据按车辆关联推断
-- 可重复执行(列已存在则跳过加列,UPDATE 可重复跑)
SET @col_exists := (
SELECT COUNT(*)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'pl_personnel'
AND COLUMN_NAME = 'personnel_type'
);
SET @ddl := IF(
@col_exists = 0,
'ALTER TABLE `pl_personnel`
ADD COLUMN `personnel_type` varchar(20) NOT NULL DEFAULT ''both''
COMMENT ''人员类型 driver-驾驶员 escort-押运员 both-驾驶员兼押运员''
AFTER `id_card_no`',
'SELECT 1'
);
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 仅有 driver 关联
UPDATE pl_personnel p
SET p.personnel_type = 'driver'
WHERE p.del_flag = 0
AND (p.personnel_type IS NULL OR p.personnel_type = '' OR p.personnel_type = 'both')
AND EXISTS (
SELECT 1 FROM pl_vehicle_personnel vp
WHERE vp.personnel_id = p.id AND vp.del_flag = 0 AND vp.role = 'driver'
)
AND NOT EXISTS (
SELECT 1 FROM pl_vehicle_personnel vp
WHERE vp.personnel_id = p.id AND vp.del_flag = 0 AND vp.role = 'escort'
);
-- 仅有 escort 关联
UPDATE pl_personnel p
SET p.personnel_type = 'escort'
WHERE p.del_flag = 0
AND (p.personnel_type IS NULL OR p.personnel_type = '' OR p.personnel_type = 'both')
AND EXISTS (
SELECT 1 FROM pl_vehicle_personnel vp
WHERE vp.personnel_id = p.id AND vp.del_flag = 0 AND vp.role = 'escort'
)
AND NOT EXISTS (
SELECT 1 FROM pl_vehicle_personnel vp
WHERE vp.personnel_id = p.id AND vp.del_flag = 0 AND vp.role = 'driver'
);
-- 同时有 driver + escort 或无关联保持 both(默认)