change(mes): 修正生产报表计算逻辑

- 修改了生产效率计算方式,去除生产时间依赖
- 简化了整体进度计算逻辑,仅保留完成数量占比
- 移除了在制品进度占比的复杂计算- 统一了数值型进度的计算标准
master
zangch@mesnac.com 2 months ago
parent 848cbe2ea4
commit e0f9c2186f

@ -254,8 +254,7 @@
CAST(
CASE
WHEN DATEDIFF(SECOND, ppd.real_begin_time, ppd.real_end_time) > 0
AND ISNULL(pproc.production_time, 0) > 0
THEN (ppd.complete_amount * pproc.production_time + 0.0) / DATEDIFF(SECOND, ppd.real_begin_time, ppd.real_end_time)
THEN (ppd.complete_amount + 0.0) / (DATEDIFF(SECOND, ppd.real_begin_time, ppd.real_end_time) / 3600.0)
ELSE NULL
END
AS DECIMAL(18,4)
@ -403,18 +402,10 @@
LTRIM(RTRIM(REPLACE(REPLACE(ISNULL(ps.wipProcessNames, ''), ',,', ','), ',', ','))) AS wipProcesses,
LTRIM(RTRIM(REPLACE(REPLACE(ISNULL(ps.remainingProcessNames, ''), ',,', ','), ',', ','))) AS remainingProcesses,
-- 整体进度计算:已完成数量占比 + 在制品进度占比
-- 整体进度计算:已完成数量 / 计划总数量
CONCAT(
CAST(
CASE
WHEN o.plan_amount > 0 AND ps.totalProcessCount > 0
THEN (
-- 已完成数量占比
(CAST(ISNULL(o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) * 100 +
-- 在制品进度占比:(在制数量/计划总数量) * (当前工序位置/总工序数)
(CAST(ISNULL(o.plan_amount - o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) *
(CAST(ISNULL(ps.maxCompletedOrder, 0) + 1 AS DECIMAL(18,6)) / CAST(ps.totalProcessCount AS DECIMAL(18,6))) * 100
)
WHEN o.plan_amount > 0
THEN (CAST(ISNULL(o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) * 100
ELSE 0
@ -429,17 +420,9 @@
END AS progressStatus,
ISNULL(ps.totalProcessCount, 0) AS totalProcessCountNum,
CAST(ISNULL(ps.wipWeightedSum, 0) AS DECIMAL(18,2)) AS wipWeightedSum,
-- 数值型整体进度
-- 数值型整体进度(不带百分号)
CAST(
CASE
WHEN o.plan_amount > 0 AND ps.totalProcessCount > 0
THEN (
-- 已完成数量占比
(CAST(ISNULL(o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) * 100 +
-- 在制品进度占比
(CAST(ISNULL(o.plan_amount - o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) *
(CAST(ISNULL(ps.maxCompletedOrder, 0) + 1 AS DECIMAL(18,6)) / CAST(ps.totalProcessCount AS DECIMAL(18,6))) * 100
)
WHEN o.plan_amount > 0
THEN (CAST(ISNULL(o.complete_amount,0) AS DECIMAL(18,6)) / CAST(o.plan_amount AS DECIMAL(18,6))) * 100
ELSE 0

Loading…
Cancel
Save