-- 排产数量按工序收率倒推 —— 远端 mom-hm 变更记录(2026-10-15)
|
-- 执行顺序:1 → 2 → 3,已在 36.213.150.237:10000 的 mom-hm 库执行完毕。
|
|
-- 1. 新增收率字段(产出/投入,0~1)
|
ALTER TABLE mes_pro_route_process ADD COLUMN yield_rate DECIMAL(10,6) NULL COMMENT '工序收率(产出/投入,0~1)' AFTER param_template_id;
|
ALTER TABLE mes_pro_work_order_process ADD COLUMN yield_rate DECIMAL(10,6) NULL COMMENT '工序收率(产出/投入,0~1)' AFTER param_template_id;
|
|
-- 2. 现有工序统一初始化为 98%
|
UPDATE mes_pro_route_process SET yield_rate = 0.980000 WHERE yield_rate IS NULL;
|
UPDATE mes_pro_work_order_process SET yield_rate = 0.980000 WHERE yield_rate IS NULL;
|
|
-- 3. 既有 604 条任务数量按收率倒推重算(末道=订单量,前面各道除以后续累计收率后向上取整为整数)
|
UPDATE mes_pro_task t
|
JOIN (
|
SELECT wop.work_order_id, wop.process_id,
|
CEIL(wo.quantity / COALESCE(EXP(SUM(LN(COALESCE(wop.yield_rate,1))) OVER (PARTITION BY wop.work_order_id ORDER BY wop.sort DESC ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)),1)) AS new_qty
|
FROM mes_pro_work_order_process wop
|
JOIN mes_pro_work_order wo ON wo.id = wop.work_order_id
|
WHERE wop.deleted = 0
|
) x ON x.work_order_id = t.work_order_id AND x.process_id = t.process_id
|
SET t.quantity = x.new_qty, t.produced_quantity = x.new_qty, t.qualify_quantity = x.new_qty
|
WHERE t.deleted = 0;
|
|
-- 备份:task-before.tsv(重算前)、task-after.tsv(重算后)、work-order-process.tsv(工序与收率依据)
|
-- 说明:604 条任务 duration 原本即为 NULL,且设备未绑定工作站,故时长未参与重算。
|