新增按时间段查询资源类型符合率报表

master
zpl 3 years ago
parent a5cbdeae37
commit f5d2427fc5

@ -177,7 +177,7 @@
<!--设备类型负荷率报表-->
<select id="findResourceTypeLoadRateInfo" resultType="java.util.HashMap" parameterType="java.util.HashMap" >
WITH TEMP AS (
SELECT ZSD.PLANNED_COMP_DATE ,ZSD.PLANNED_START_DATE ,ZSD.RESRCE
SELECT ZSD.PLANNED_COMP_DATE ,ZSD.PLANNED_START_DATE ,ZSD.RESRCE ,ZSD.PROD_HOURS , ZSD.DISPATCH_QTY
FROM Z_SFC_DISPATCH ZSD WHERE ZSD.SITE = #{site} AND ZSD.DISPATCH_STATUS != 'CANCEL'
AND ZSD.PLANNED_COMP_DATE IS NOT NULL AND ZSD.PLANNED_START_DATE IS NOT NULL
),
@ -207,10 +207,17 @@
<if test="resourceType != null and resourceType != ''" >
AND RT.RESOURCE_TYPE = #{resourceType}
</if>)
<if test="reportType != null and reportType.contains('true')">
SELECT TD.RESOURCE_TYPE ,TD.RESOURCE_TYPE_DESCRIPTION ,TD.WORK_CENTER, TD.WORK_CENTER_DESCRIPTION,
SUM(TD.PLAN_HOUR) PLAN_HOUR, SUM(TD.CAPACITY_MAN_HOUR) CAPACITY_MAN_HOUR,
CASE WHEN SUM(TD.CAPACITY_MAN_HOUR) = 0 THEN 0 || '%'
ELSE ROUND(SUM(TD.PLAN_HOUR)/SUM(TD.CAPACITY_MAN_HOUR),4)*100 || '%' END RATE_DATA
FROM (
</if>
SELECT M.*,M.RATE_DATA_INT || '%' RATE_DATA FROM (
SELECT T.SITE,T.RESOURCE_TYPE, T.RESOURCE_TYPE_DESCRIPTION, T.WORK_CENTER, T.WORK_CENTER_DESCRIPTION,T.DATE_TIME,
ROUND(SUM(T.PLAN_HOUR) * SUM(T.CAPACITY_MAN_HOUR) / 8 ,4) PLAN_HOUR, SUM(T.CAPACITY_MAN_HOUR) CAPACITY_MAN_HOUR,
CASE WHEN SUM(T.PLAN_HOUR) = 0 OR SUM(T.CAPACITY_MAN_HOUR) = 0 THEN 0 ELSE ROUND(SUM(T.PLAN_HOUR)/8,4)*100 END RATE_DATA_INT
CASE WHEN SUM(T.PLAN_HOUR) = 0 OR SUM(T.CAPACITY_MAN_HOUR) = 0 THEN 0 ELSE ROUND(SUM(T.PLAN_HOUR)/SUM(T.CAPACITY_MAN_HOUR),4)*100 END RATE_DATA_INT
FROM
(
SELECT RDT.* , SUM( (DECODE(A.CNT,NULL,0,A.CNT) + DECODE(B.CNT,NULL,0,B.CNT) + DECODE(C.CNT,NULL,0,C.CNT) + DECODE(D.CNT,NULL,0,D.CNT)
@ -219,51 +226,51 @@
FROM
RDT
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , COUNT(*) * 8 CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &lt;= AM_START_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) A ON A.DATE_TIME = RDT.DATE_TIME AND A.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - AM_START_DATE_TIME)*24, 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &lt;= AM_START_DATE_TIME AND PLANNED_COMP_DATE &gt;= AM_START_DATE_TIME AND PLANNED_COMP_DATE &lt;= AM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) B ON B.DATE_TIME = RDT.DATE_TIME AND B.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , COUNT(*)*4 CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &lt;= AM_START_DATE_TIME AND PLANNED_COMP_DATE &gt;= AM_END_DATE_TIME AND PLANNED_COMP_DATE &lt; PM_START_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) C ON C.DATE_TIME = RDT.DATE_TIME AND C.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - AM_START_DATE_TIME)*24 - 1 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &lt;= AM_START_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_START_DATE_TIME AND PLANNED_COMP_DATE &lt;= PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) D ON D.DATE_TIME = RDT.DATE_TIME AND D.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - PLANNED_START_DATE)*24 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_START_DATE_TIME AND PLANNED_COMP_DATE &lt;= AM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) E ON E.DATE_TIME = RDT.DATE_TIME AND E.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((AM_END_DATE_TIME - PLANNED_START_DATE)*24 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_START_DATE_TIME AND PLANNED_START_DATE &lt;= AM_END_DATE_TIME AND PLANNED_COMP_DATE &gt;= AM_END_DATE_TIME AND PLANNED_COMP_DATE &lt;= PM_START_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) F ON F.DATE_TIME = RDT.DATE_TIME AND F.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - PLANNED_START_DATE)*24 - 1 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_START_DATE_TIME AND PLANNED_START_DATE &lt;= AM_END_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_START_DATE_TIME AND PLANNED_COMP_DATE &lt; PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) G ON G.DATE_TIME = RDT.DATE_TIME AND G.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PM_END_DATE_TIME - PLANNED_START_DATE)*24 - 1 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_START_DATE_TIME AND PLANNED_START_DATE &lt;= AM_END_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) H ON H.DATE_TIME = RDT.DATE_TIME AND H.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - PM_START_DATE_TIME)*24 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_END_DATE_TIME AND PLANNED_START_DATE &lt;= PM_START_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_START_DATE_TIME AND PLANNED_COMP_DATE &lt; PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) I ON I.DATE_TIME = RDT.DATE_TIME AND I.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , COUNT(*)*4 CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; AM_END_DATE_TIME AND PLANNED_START_DATE &lt; PM_START_DATE_TIME AND PLANNED_COMP_DATE &gt; PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) J ON J.DATE_TIME = RDT.DATE_TIME AND J.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PLANNED_COMP_DATE - PLANNED_START_DATE)*24 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; PM_START_DATE_TIME AND PLANNED_COMP_DATE &lt; PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) K ON K.DATE_TIME = RDT.DATE_TIME AND K.RESRCE = RDT.RESRCE
LEFT JOIN
(SELECT DATE_TIME ,RESRCE , SUM( ROUND((PM_END_DATE_TIME - PLANNED_START_DATE)*24 , 4) ) CNT FROM Z_REPORT_DATE_TIME
(SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) CNT FROM Z_REPORT_DATE_TIME
LEFT JOIN TEMP ON PLANNED_START_DATE &gt; PM_START_DATE_TIME AND PLANNED_START_DATE &lt; PM_END_DATE_TIME AND PLANNED_COMP_DATE &gt;= PM_END_DATE_TIME
GROUP BY RESRCE , DATE_TIME ) L ON L.DATE_TIME = RDT.DATE_TIME AND L.RESRCE = RDT.RESRCE
GROUP BY RDT.SITE,RDT.RESRCE, RDT.RESOURCE_DESCRIPTION, RDT.DATE_TIME ,RDT.CAPACITY_MAN_HOUR , RDT.WORK_CENTER ,RDT.WORK_CENTER_DESCRIPTION ,RDT.RESOURCE_TYPE ,RDT.RESOURCE_TYPE_DESCRIPTION
@ -277,6 +284,11 @@
AND M.RATE_DATA_INT &lt;= #{endRate}
</if>
ORDER BY M.WORK_CENTER,M.RESOURCE_TYPE,M.DATE_TIME
<if test="reportType != null and reportType.contains('true')">
) TD
GROUP BY TD.RESOURCE_TYPE ,TD.RESOURCE_TYPE_DESCRIPTION ,TD.WORK_CENTER, TD.WORK_CENTER_DESCRIPTION
ORDER BY TD.WORK_CENTER_DESCRIPTION ,TD.RESOURCE_TYPE_DESCRIPTION
</if>
</select>
<!--设备维修数据统计报表-->

Loading…
Cancel
Save