Files
MES/yawei-mes/.sql/2025-11-17_01_周启威_连续制造业流程优化.sql
2026-04-02 10:39:03 +08:00

93 lines
3.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ==========================================
-- 第一部分DDL - 表结构修改
-- ==========================================
-- 1. 工序路线主表 (pro_route) 扩展
-- 新增字段:制造类型(制造类型直接决定时间计算模式)
ALTER TABLE `pro_route`
ADD COLUMN `manufacture_type` VARCHAR(20) DEFAULT 'DISCRETE'
COMMENT '制造类型: DISCRETE=离散制造(顺序推进), CONTINUOUS=连续制造(同步开工)'
AFTER `status`;
-- 2. 工序路线明细表 (pro_route_process) 扩展
-- 新增字段:转运时间(离散制造)和等待开始时间(连续制造)
ALTER TABLE `pro_route_process`
ADD COLUMN `transfer_time` BIGINT DEFAULT 0
COMMENT '转运时间(秒),离散制造时从上一工序到本工序的转运耗时'
AFTER `duration`,
ADD COLUMN `wait_start_time` BIGINT DEFAULT 0
COMMENT '等待开始时间(秒),连续制造时从生产起始时间的延迟'
AFTER `transfer_time`;
-- ==========================================
-- 第二部分DML - 数据迁移
-- ==========================================
-- 3. 为现有工序路线设置默认值(离散制造)
UPDATE `pro_route`
SET `manufacture_type` = 'DISCRETE'
WHERE `manufacture_type` IS NULL;
-- 4. 为现有工序明细设置默认转运时间和等待开始时间为0
UPDATE `pro_route_process`
SET `transfer_time` = 0,
`wait_start_time` = 0
WHERE `transfer_time` IS NULL
OR `wait_start_time` IS NULL;
-- ==========================================
-- 第三部分:数据验证查询
-- ==========================================
-- 5. 验证工序路线表新增字段
SELECT
COUNT(*) AS total_routes,
SUM(CASE WHEN manufacture_type = 'DISCRETE' THEN 1 ELSE 0 END) AS discrete_count,
SUM(CASE WHEN manufacture_type = 'CONTINUOUS' THEN 1 ELSE 0 END) AS continuous_count
FROM `pro_route`;
-- 6. 验证工序明细表新增字段
SELECT
COUNT(*) AS total_processes,
SUM(CASE WHEN transfer_time = 0 THEN 1 ELSE 0 END) AS zero_transfer_time,
SUM(CASE WHEN transfer_time > 0 THEN 1 ELSE 0 END) AS has_transfer_time,
SUM(CASE WHEN wait_start_time = 0 THEN 1 ELSE 0 END) AS zero_wait_time,
SUM(CASE WHEN wait_start_time > 0 THEN 1 ELSE 0 END) AS has_wait_time,
AVG(transfer_time) AS avg_transfer_time,
MAX(transfer_time) AS max_transfer_time,
AVG(wait_start_time) AS avg_wait_time,
MAX(wait_start_time) AS max_wait_time
FROM `pro_route_process`;
-- 7. 查看表结构变化(可选)
-- SHOW FULL COLUMNS FROM `pro_route`;
-- SHOW FULL COLUMNS FROM `pro_route_process`;
-- ==========================================
-- 第四部分:回滚脚本(如需要)
-- ==========================================
/*
-- 警告:此部分仅用于回滚,会删除新增的字段和数据
-- 请谨慎执行!
-- 回滚工序路线主表
ALTER TABLE `pro_route`
DROP COLUMN `manufacture_type`;
-- 回滚工序明细表
ALTER TABLE `pro_route_process`
DROP COLUMN `transfer_time`,
DROP COLUMN `wait_start_time`;
*/
-- ==========================================
-- 执行说明
-- ==========================================
-- 1. 建议在测试环境先执行验证
-- 2. 生产环境执行前务必备份数据库
-- 3. 分步执行,每步验证无误后再继续
-- 4. 执行第三部分(验证查询)确认数据正确性
-- 5. 如需回滚,使用第五部分的回滚脚本
-- ==========================================