From d0f94d47f4e8fef7e59ca2e6210f9d470740f947 Mon Sep 17 00:00:00 2001 From: zpl Date: Fri, 22 Oct 2021 12:01:08 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E6=B4=BE=E5=B7=A5?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C=E5=91=98=EF=BC=8C=E6=8C=89=E5=B7=A5?= =?UTF-8?q?=E5=BA=8F=E7=9A=84=E6=88=90=E6=9C=AC=E4=B8=AD=E5=BF=83=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mapper/UserResourceMapper.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/dispatch/src/main/resources/mapper/UserResourceMapper.xml b/dispatch/src/main/resources/mapper/UserResourceMapper.xml index 3c958109..66f7cdfe 100644 --- a/dispatch/src/main/resources/mapper/UserResourceMapper.xml +++ b/dispatch/src/main/resources/mapper/UserResourceMapper.xml @@ -482,12 +482,26 @@ 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 IN ('START','COMPLETE','RELEASE') ), Z_REPORT_DATE_TIME AS (SELECT '1000' SITE ,TO_CHAR(TO_DATE(#{startFromDate},'YYYY-MM-DD') + ROWNUM -1, 'YYYY-MM-DD') DATE_TIME, TO_DATE(#{startFromDate} || '00:00:00','yyyy-mm-dd hh24:mi:ss') + rownum -1 AM_START_DATE_TIME, @@ -97,61 +97,70 @@ ( 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 + + 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_OLD + ,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) ) 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_OLD + ,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) + ) ) / CAPACITY_MAN_HOUR , 4) * 100 END RATE_DATA_INT 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 <= 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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 + (SELECT DATE_TIME ,RESRCE , SUM(PROD_HOURS*DISPATCH_QTY ) 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