@ -1147,54 +1147,57 @@
<select id= "ProjectScheduleReport" parameterType= "java.util.HashMap" resultType= "java.util.HashMap" >
<select id= "ProjectScheduleReport" parameterType= "java.util.HashMap" resultType= "java.util.HashMap" >
--项目进度报表
--项目进度报表
SELECT WIP.item "item",--项目号
SELECT WIP.item "item",--项目号
WIP.workOrder "workOrder",
WIP.workOrder "workOrder",
WIP.shopOrder "shopOrder",
WIP.shopOrder "shopOrder",
WIP.SFC "SFC",
WIP.SFC "SFC",
WIP.itemDescription "itemDescription",
WIP.itemDescription "itemDescription",
WIP.shopOrderQTY "shopOrderQTY",
WIP.shopOrderQTY "shopOrderQTY",
WIP.doneQTY "doneQTY",--已完成数量
WIP.doneQTY "doneQTY",--已完成数量
CASE
CASE
WHEN WIP.shopOrderQTY = WIP.doneQTY THEN '100.00'
WHEN WIP.shopOrderQTY = WIP.doneQTY THEN '100.00'
ELSE WIP.rate
ELSE WIP.rate
END
END
|| '%' "rate",
|| '%' "rate",
zsd2.CURRENT_OPERATION "currentOperation",
zsd2.CURRENT_OPERATION "currentOperation",
WIP.nextOperationNum "nextOperationNum",
WIP.nextOperationNum "nextOperationNum",
zsd3.PLANNED_COMP_DATE "currentPlanTime",
zsd3.PLANNED_COMP_DATE "currentPlanTime",
WIP.endPlanTime "endPlanTime",
WIP.endPlanTime "endPlanTime",
WIP.rework "rework",--是否返修工序
-- WIP.rework "rework",--是否返修工序
CASE
CASE
WHEN WIP.nextOperationNum > 0 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND zsd3.DISPATCH_STATUS != 'COMPLETE'
WHEN WIP.nextOperationNum > 0 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND zsd3.DISPATCH_STATUS != 'COMPLETE'
THEN 'true'
THEN 'true'
WHEN WIP.nextOperationNum = 0 AND WIP.rate !=100.00 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND
WHEN WIP.nextOperationNum = 0 AND WIP.rate != 100.00 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND
zsd3.DISPATCH_STATUS != 'COMPLETE'
zsd3.DISPATCH_STATUS != 'COMPLETE'
THEN 'true'
THEN 'true'
ELSE 'false' END "isOverTime" --当前工序是否超时
ELSE 'false' END "isOverTime" --当前工序是否超时
FROM (SELECT cf.VALUE item,--项目号
FROM (SELECT cf.VALUE item,--项目号
cf2.VALUE workOrder,--工作令
cf2.VALUE workOrder,--工作令
zsd.SHOP_ORDER shopOrder,--订单编号
zsd.SHOP_ORDER shopOrder,--订单编号
zsd.SFC SFC,--SFC
zsd.SFC SFC,--SFC
it.DESCRIPTION itemDescription,--物料描述
it.DESCRIPTION itemDescription,--物料描述
MIN(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
MIN(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
MIN(CASE
MIN(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
zsd.DISPATCH_QTY
zsd.DISPATCH_QTY
ELSE 0 END) doneQTY, --已完成数量
ELSE 0 END) doneQTY, --已完成数量
TO_CHAR(
TO_CHAR(
DECODE(SUM(CASE
DECODE(SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
zsd.PROD_HOURS * zsd.DISPATCH_QTY
zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END), 0, 0, SUM(CASE
ELSE 0 END), 0, 0, SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN
zsd.PROD_HOURS * zsd.DISPATCH_QTY
zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END) / SUM(zsd.PROD_HOURS * zsd.DISPATCH_QTY))
ELSE 0 END) / SUM(zsd.PROD_HOURS * zsd.DISPATCH_QTY))
* 100, '99990.99') rate,--进度(工时百分比)
* 100, '99990.99') rate,--进度(工时百分比)
MAX(zsd.ACTUAL_START_DATE) ACTUAL_START_DATE,--最大实际开始时间
MAX(zsd.ACTUAL_START_DATE) ACTUAL_START_DATE,--最大实际开始时间
SUM(CASE WHEN zsd.DISPATCH_STATUS != 'COMPLETE' AND zsd.DISPATCH_STATUS != 'CANCEL' THEN 1 ELSE 0 END) nextOperationNum,--剩余工序数量
SUM(CASE
MAX(zsd.PLANNED_COMP_DATE) endPlanTime,--计划最终交付时间
WHEN zsd.DISPATCH_STATUS != 'COMPLETE' AND zsd.DISPATCH_STATUS != 'CANCEL' THEN 1
rs.REWORK rework,--是否返修工序
ELSE 0 END) nextOperationNum,--剩余工序数量
zsd.SITE SITE
MAX(zsd.PLANNED_COMP_DATE) endPlanTime,--计划最终交付时间
-- rs.REWORK rework,--是否返修工序
zsd.SITE SITE
FROM Z_SFC_DISPATCH zsd
FROM Z_SFC_DISPATCH zsd
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
LEFT JOIN SFC s ON s.SFC = zsd.SFC AND s.SITE = zsd.SITE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zsd.SHOP_ORDER AND so.SITE = zsd.SITE
@ -1208,21 +1211,25 @@
-- AND zsd.DISPATCH_STATUS != 'CANCEL'
-- AND zsd.DISPATCH_STATUS != 'CANCEL'
AND cf.VALUE IS NOT NULL
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION, rs.REWORK
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION
ORDER BY rate
ORDER BY rate
) WIP
) WIP
LEFT JOIN (SELECT zsd1.SITE,zsd1.SFC,MAX(zsd1.STEP_ID) STEP_ID,MAX(zsd1.CURRENT_OPERATION) CURRENT_OPERATION FROM (
LEFT JOIN (SELECT zsd1.SITE, zsd1.SFC, MAX(zsd1.STEP_ID) STEP_ID, MAX(zsd1.CURRENT_OPERATION) CURRENT_OPERATION
SELECT zsd0.SITE,zsd0.SFC,OT.DESCRIPTION CURRENT_OPERATION,ss.STEP_ID
FROM (
SELECT zsd0.SITE, zsd0.SFC, OT.DESCRIPTION CURRENT_OPERATION, ss.STEP_ID
FROM Z_SFC_DISPATCH zsd0
FROM Z_SFC_DISPATCH zsd0
LEFT JOIN SFC s2 ON s2.SFC = zsd0.SFC AND s2.SITE = zsd0.SITE
LEFT JOIN SFC s2 ON s2.SFC = zsd0.SFC AND s2.SITE = zsd0.SITE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true'
LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true'
LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND (ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0)
LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND
(ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0)
INNER JOIN OPERATION o
INNER JOIN OPERATION o
ON ss.OPERATION_BO = 'OperationBO:'||o.SITE||','||o.OPERATION||',#' AND o.CURRENT_REVISION = 'true' AND o.SITE = zsd0.SITE AND o.CURRENT_REVISION = 'true'
ON ss.OPERATION_BO = 'OperationBO:' || o.SITE || ',' || o.OPERATION || ',#' AND
o.CURRENT_REVISION = 'true' AND o.SITE = zsd0.SITE AND
o.CURRENT_REVISION = 'true'
and zsd0.OPERATION = o.OPERATION
and zsd0.OPERATION = o.OPERATION
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh') zsd1
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh') zsd1
GROUP BY zsd1.SITE,zsd1.SFC) zsd2 ON WIP.SFC = zsd2.SFC AND WIP.SITE = zsd2.SITE
GROUP BY zsd1.SITE, zsd1.SFC) zsd2 ON WIP.SFC = zsd2.SFC AND WIP.SITE = zsd2.SITE
LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.SFC = zsd2.SFC AND zsd3.STEP_ID = zsd2.STEP_ID AND zsd3.SITE = zsd2.SITE
LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.SFC = zsd2.SFC AND zsd3.STEP_ID = zsd2.STEP_ID AND zsd3.SITE = zsd2.SITE
<where >
<where >
<if test= "careerKey != null and careerKey != ''" >
<if test= "careerKey != null and careerKey != ''" >
@ -1369,35 +1376,48 @@
</select>
</select>
<select id= "projectScheduleShow" parameterType= "java.util.HashMap" resultType= "java.util.HashMap" >
<select id= "projectScheduleShow" parameterType= "java.util.HashMap" resultType= "java.util.HashMap" >
--事业部项目进度看板数据接口
--事业部项目进度看板数据接口
SELECT * FROM (
SELECT *
SELECT OWIP.item "item",--项目号
FROM (
OWIP.workOrder "workOrder",
SELECT OWIP.item "item",--项目号
SUM(OWIP.shopOrderQTY) "shopOrderQTY",
OWIP.workOrder "workOrder",
TO_CHAR(AVG(OWIP.rate), '990.99') "rate", --项目总进度(工时百分比)
SUM(OWIP.shopOrderQTY) "shopOrderQTY",
TO_CHAR(AVG(CASE
WHEN OWIP.shopOrderQTY = OWIP.doneQTY THEN '100.00'
ELSE OWIP.rate
END), '990.99') "rate", --项目总进度(工时百分比)
TO_CHAR(CASE
TO_CHAR(CASE
WHEN
WHEN
DECODE((TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))),
DECODE((TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))),
0, 0, ((TO_DATE(SYSDATE) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))) /
0, 0, ((TO_DATE(SYSDATE) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))) /
(TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE)))))
(TO_DATE(MAX(OWIP.endPlanTime)) -
TO_DATE(MIN(OWIP.PLANNED_START_DATE)))))
<![CDATA[ < 1 ]]>
<![CDATA[ < 1 ]]>
THEN DECODE((TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))),
THEN DECODE((TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))),
0, 0, ((TO_DATE(SYSDATE) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))) /
0, 0, ((TO_DATE(SYSDATE) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))) /
(TO_DATE(MAX(OWIP.endPlanTime)) - TO_DATE(MIN(OWIP.PLANNED_START_DATE))))) * 100
(TO_DATE(MAX(OWIP.endPlanTime)) -
TO_DATE(MIN(OWIP.PLANNED_START_DATE))))) * 100
ELSE 100 END, '990.99') "planRate", --计划进度
ELSE 100 END, '990.99') "planRate", --计划进度
MAX(OWIP.endPlanTime) "endPlanDate",
MAX(OWIP.endPlanTime) "endPlanDate",
MIN(OWIP.PLANNED_START_DATE) "startDate"
MIN(OWIP.PLANNED_START_DATE) "startDate"
FROM (SELECT cf.VALUE item,--项目号
FROM (SELECT cf.VALUE item,--项目号
cf2.VALUE workOrder,--工作令
cf2.VALUE workOrder,--工作令
zsd.SFC,
zsd.SFC,
MAX(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
MIN(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量
MIN(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL' THEN
zsd.DISPATCH_QTY
ELSE 0 END) doneQTY, --已完成数量
TO_CHAR(
TO_CHAR(
DECODE(SUM(CASE
DECODE(SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN
zsd.PROD_HOURS * zsd.DISPATCH_QTY
zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END), 0, 0, SUM(CASE
ELSE 0 END), 0, 0, SUM(CASE
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN
WHEN zsd.DISPATCH_STATUS = 'COMPLETE' OR zsd.DISPATCH_STATUS = 'CANCEL'
THEN
zsd.PROD_HOURS * zsd.DISPATCH_QTY
zsd.PROD_HOURS * zsd.DISPATCH_QTY
ELSE 0 END) / SUM(zsd.PROD_HOURS * zsd.DISPATCH_QTY) )
ELSE 0 END) /
SUM(zsd.PROD_HOURS * zsd.DISPATCH_QTY))
* 100, '99990.99') rate,--进度(工时百分比)
* 100, '99990.99') rate,--进度(工时百分比)
MAX(zsd.PLANNED_COMP_DATE) endPlanTime, --计划最终交付时间
MAX(zsd.PLANNED_COMP_DATE) endPlanTime, --计划最终交付时间
MIN(zsd.PLANNED_START_DATE) PLANNED_START_DATE--计划开始时间
MIN(zsd.PLANNED_START_DATE) PLANNED_START_DATE--计划开始时间
@ -1407,11 +1427,10 @@
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = so.HANDLE AND cf."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS cf2 ON cf2.HANDLE = so.HANDLE AND cf2."ATTRIBUTE" = 'WORK_ORDER'
WHERE zsd.SITE = '1000'
WHERE zsd.SITE = '1000'
AND zsd.DISPATCH_STATUS != 'CANCEL'
AND cf.VALUE IS NOT NULL
AND cf.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
AND cf2.VALUE IS NOT NULL
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE,zsd.SFC
GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC
ORDER BY endPlanTime DESC ) OWIP
) OWIP
GROUP BY OWIP.item, OWIP.workOrder
GROUP BY OWIP.item, OWIP.workOrder
) WIP
) WIP
<where >
<where >