From 4ee3747927918cb1942ea973af6b547a41f4f0fe Mon Sep 17 00:00:00 2001 From: zpl Date: Wed, 8 Sep 2021 16:26:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=AC=A6=E5=90=88=E7=8E=87?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E6=96=B0=E5=A2=9E=E8=AE=A1=E5=88=92=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=8E=87=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/ReportDataMapper.xml | 130 ++++++++++++++++-- 1 file changed, 122 insertions(+), 8 deletions(-) diff --git a/common/src/main/resources/mapper/ReportDataMapper.xml b/common/src/main/resources/mapper/ReportDataMapper.xml index f2ab1860..4a55a299 100644 --- a/common/src/main/resources/mapper/ReportDataMapper.xml +++ b/common/src/main/resources/mapper/ReportDataMapper.xml @@ -58,17 +58,123 @@ SELECT ZSD.PLANNED_COMP_DATE ,ZSD.PLANNED_START_DATE ,ZSD.RESRCE FROM Z_SFC_DISPATCH ZSD WHERE ZSD.SITE = #{site} AND ZSD.DISPATCH_STATUS IN ('START','COMPLETE','RELEASE') ) - 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) + SELECT T.*,T.RATE_DATA_INT || '%' RATE_DATA FROM + ( + SELECT RDT.* , ROUND((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) + + DECODE(E.CNT,NULL,0,E.CNT) + DECODE(F.CNT,NULL,0,F.CNT) + DECODE(G.CNT,NULL,0,G.CNT) + DECODE(H.CNT,NULL,0,H.CNT) + + DECODE(I.CNT,NULL,0,I.CNT) + DECODE(J.CNT,NULL,0,J.CNT) ) + DECODE(K.CNT,NULL,0,K.CNT) + DECODE(L.CNT,NULL,0,L.CNT) ) * RDT.CAPACITY_MAN_HOUR / 8),4) PLAN_HOUR + ,CASE WHEN RDT.CAPACITY_MAN_HOUR = 0 THEN 0 + ELSE ROUND(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) + + DECODE(E.CNT,NULL,0,E.CNT) + DECODE(F.CNT,NULL,0,F.CNT) + DECODE(G.CNT,NULL,0,G.CNT) + DECODE(H.CNT,NULL,0,H.CNT) + + DECODE(I.CNT,NULL,0,I.CNT) + DECODE(J.CNT,NULL,0,J.CNT) + DECODE(K.CNT,NULL,0,K.CNT) + DECODE(L.CNT,NULL,0,L.CNT) + ) ) / 8 , 4) * 100 + END RATE_DATA_INT + FROM + ( SELECT R.SITE,R.RESRCE , R.DESCRIPTION RESOURCE_DESCRIPTION, DATE_TIME, DECODE(CF.VALUE,NULL,0,CF.VALUE) CAPACITY_MAN_HOUR , WCA.WORK_CENTER CENTER , + WCTA.DESCRIPTION CENTER_DESCRIPTION , WCB.WORK_CENTER , WCTB.DESCRIPTION WORK_CENTER_DESCRIPTION ,RT.RESOURCE_TYPE ,RT.DESCRIPTION RESOURCE_TYPE_DESCRIPTION + FROM RESRCE R + LEFT JOIN WORK_CENTER_MEMBER WCMA ON WCMA.WORK_CENTER_OR_RESOURCE_GBO = R.HANDLE + LEFT JOIN WORK_CENTER WCA ON WCA.HANDLE = WCMA.WORK_CENTER_BO + INNER JOIN WORK_CENTER_T WCTA ON WCTA.WORK_CENTER_BO = WCA.HANDLE AND WCTA.LOCALE = 'zh' + LEFT JOIN WORK_CENTER_MEMBER WCMB ON WCMB.WORK_CENTER_OR_RESOURCE_GBO = WCMA.WORK_CENTER_BO + INNER JOIN WORK_CENTER WCB ON WCB.HANDLE = WCMB.WORK_CENTER_BO + INNER JOIN WORK_CENTER_T WCTB ON WCTB.WORK_CENTER_BO = WCB.HANDLE AND WCTB.LOCALE = 'zh' + LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = R.HANDLE AND CF."ATTRIBUTE" = 'CAPACITY_MAN_HOUR' + LEFT JOIN Z_REPORT_DATE_TIME ON 1=1 + LEFT JOIN RESOURCE_TYPE_RESOURCE RTR ON RTR.RESOURCE_BO = R.HANDLE + LEFT JOIN RESOURCE_TYPE RT ON RT.HANDLE = RTR.RESOURCE_TYPE_BO + WHERE R.SITE = #{site} + + AND WCA.WORK_CENTER = #{center} + + + AND WCB.WORK_CENTER = #{workCenter} + + + AND R.RESRCE = #{resrce} + + + AND RT.RESOURCE_TYPE = #{resourceType} + ) RDT + LEFT JOIN + (SELECT DATE_TIME ,RESRCE , COUNT(*) * 8 CNT FROM Z_REPORT_DATE_TIME + LEFT JOIN TEMP ON PLANNED_START_DATE <= AM_START_DATE_TIME AND PLANNED_COMP_DATE >= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE <= AM_START_DATE_TIME AND PLANNED_COMP_DATE >= AM_START_DATE_TIME AND PLANNED_COMP_DATE <= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE <= AM_START_DATE_TIME AND PLANNED_COMP_DATE >= AM_END_DATE_TIME AND PLANNED_COMP_DATE < 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 + LEFT JOIN TEMP ON PLANNED_START_DATE <= AM_START_DATE_TIME AND PLANNED_COMP_DATE >= PM_START_DATE_TIME AND PLANNED_COMP_DATE <= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_START_DATE_TIME AND PLANNED_COMP_DATE <= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_START_DATE_TIME AND PLANNED_START_DATE <= AM_END_DATE_TIME AND PLANNED_COMP_DATE >= AM_END_DATE_TIME AND PLANNED_COMP_DATE <= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_START_DATE_TIME AND PLANNED_START_DATE <= AM_END_DATE_TIME AND PLANNED_COMP_DATE >= PM_START_DATE_TIME AND PLANNED_COMP_DATE < 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_START_DATE_TIME AND PLANNED_START_DATE <= AM_END_DATE_TIME AND PLANNED_COMP_DATE >= 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_END_DATE_TIME AND PLANNED_START_DATE <= PM_START_DATE_TIME AND PLANNED_COMP_DATE >= PM_START_DATE_TIME AND PLANNED_COMP_DATE < 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > AM_END_DATE_TIME AND PLANNED_START_DATE < PM_START_DATE_TIME AND PLANNED_COMP_DATE > 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > PM_START_DATE_TIME AND PLANNED_COMP_DATE < 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 + LEFT JOIN TEMP ON PLANNED_START_DATE > PM_START_DATE_TIME AND PLANNED_START_DATE < PM_END_DATE_TIME AND PLANNED_COMP_DATE >= 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.CENTER ,RDT.CENTER_DESCRIPTION ,RDT.WORK_CENTER ,RDT.WORK_CENTER_DESCRIPTION ,RDT.RESOURCE_TYPE ,RDT.RESOURCE_TYPE_DESCRIPTION + ORDER BY RDT.WORK_CENTER ,RDT.RESRCE, RDT.DATE_TIME ) T + WHERE T.SITE = #{site} + + AND T.RATE_DATA_INT >= #{startRate} + + + AND T.RATE_DATA_INT <= #{endRate} + + + + + +