Files
zkxw/docs/sql/migrate_task_equipment_to_task_level.sql
T
2026-06-30 09:19:06 +08:00

38 lines
1.5 KiB
SQL

-- 生产任务级设备:从步骤/工序/路线迁移并停用步骤级设备
-- 执行前请备份数据库
-- 1. 生产任务表新增设备字段
ALTER TABLE `biz_production_task`
ADD COLUMN `equipment_ids` varchar(1000) DEFAULT NULL COMMENT '关联设备ID(逗号分隔)' AFTER `attachments`,
ADD COLUMN `equipment_name` varchar(1000) DEFAULT NULL COMMENT '设备名称快照(逗号分隔)' AFTER `equipment_ids`;
-- 2. 将任务步骤上的设备汇总到任务(按 task_id 合并,读取端会 parse 去重)
UPDATE `biz_production_task` t
INNER JOIN (
SELECT
`task_id`,
GROUP_CONCAT(DISTINCT `equipment_ids` ORDER BY `step_order` SEPARATOR ',') AS `eq_ids`,
GROUP_CONCAT(DISTINCT `equipment_name` ORDER BY `step_order` SEPARATOR ',') AS `eq_names`
FROM `biz_production_task_step`
WHERE `del_flag` = 0
AND `equipment_ids` IS NOT NULL
AND TRIM(`equipment_ids`) != ''
GROUP BY `task_id`
) s ON s.`task_id` = t.`id`
SET
t.`equipment_ids` = s.`eq_ids`,
t.`equipment_name` = s.`eq_names`;
-- 3. 清空步骤/路线/工序上的设备(设备仅保留在生产任务级)
UPDATE `biz_production_task_step`
SET `equipment_ids` = NULL, `equipment_name` = NULL
WHERE `equipment_ids` IS NOT NULL OR `equipment_name` IS NOT NULL;
UPDATE `biz_process_route_step`
SET `equipment_ids` = NULL, `equipment_name` = NULL
WHERE `equipment_ids` IS NOT NULL OR `equipment_name` IS NOT NULL;
UPDATE `biz_process`
SET `equipment_ids` = NULL, `equipment_name` = NULL
WHERE `equipment_ids` IS NOT NULL OR `equipment_name` IS NOT NULL;