初始代码
This commit is contained in:
92
yawei-mes/.sql/2025-11-17_01_周启威_连续制造业流程优化.sql
Normal file
92
yawei-mes/.sql/2025-11-17_01_周启威_连续制造业流程优化.sql
Normal file
@@ -0,0 +1,92 @@
|
||||
-- ==========================================
|
||||
-- 第一部分: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. 如需回滚,使用第五部分的回滚脚本
|
||||
-- ==========================================
|
||||
Reference in New Issue
Block a user