sucheng 7 månader sedan
förälder
incheckning
85ae36515d
1 ändrade filer med 97 tillägg och 66 borttagningar
  1. 97 66
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

+ 97 - 66
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

@@ -725,7 +725,7 @@
            or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
             ),
             actual as (
         -- 按照车间分组统计本周铸轧工序类别实际加工量
@@ -751,33 +751,42 @@
            or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            total as (
+        select plan.TENANTID,
+            plan.PROCESSWORKSHOPID,
+            plan.PROCESSDAY,
+            plan.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
+        union
+        select actual.TENANTID,
+            actual.PROCESSWORKSHOPID,
+            actual.PROCESSDAY,
+            actual.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
             )
+
         select
-            plan.PROCESSWORKSHOPID
-             ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
+            total.PROCESSWORKSHOPID
+             ,total.PROCESSWORKSHOP
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
         --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
 --                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
+            ,IFNULL(ROUND(AVG(total.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by plan.PROCESSWORKSHOPID
-        union -- mysql 该版本不支持full join,通过left join 和right join配合
-        select
-            actual.PROCESSWORKSHOPID
-             ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
-        --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
-        from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by actual.PROCESSWORKSHOPID
+            total  group by total.PROCESSWORKSHOPID
     </select>
     <select id="selectCastRollPhotoAvg" resultType="com.rongwei.bsentity.domain.ApsReportCastRollPhoto">
         with months as (
@@ -910,7 +919,7 @@
            or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
             ),
             actual as (
         -- 按照车间分组统计本周精整工序类别实际加工量
@@ -936,33 +945,43 @@
            or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            total as (
+        select plan.TENANTID,
+            plan.PROCESSWORKSHOPID,
+            plan.PROCESSDAY,
+            plan.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
+        union
+        select actual.TENANTID,
+            actual.PROCESSWORKSHOPID,
+            actual.PROCESSDAY,
+            actual.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
             )
+
         select
-            plan.PROCESSWORKSHOPID
-             ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
+            total.PROCESSWORKSHOPID
+             ,total.PROCESSWORKSHOP
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
         --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
 --                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
+            ,IFNULL(ROUND(AVG(total.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by plan.PROCESSWORKSHOPID
-        union -- mysql 该版本不支持full join,通过left join 和right join配合
-        select
-            actual.PROCESSWORKSHOPID
-             ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
-        --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
-        from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by actual.PROCESSWORKSHOPID
+            total  group by total.PROCESSWORKSHOPID
+
     </select>
     <select id="selectProcessAvg" resultType="com.rongwei.bsentity.domain.ApsReportJzProcessPhoto">
         with months as (
@@ -1095,7 +1114,7 @@
            or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
             ),
             actual as (
         -- 按照车间分组统计本周轧机工序类别实际加工量
@@ -1121,33 +1140,42 @@
            or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
           and apo.TENANTID=#{tenantId}
         group by
-            apope.PROCESSWORKSHOPID
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            total as (
+        select plan.TENANTID,
+            plan.PROCESSWORKSHOPID,
+            plan.PROCESSDAY,
+            plan.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
+        union
+        select actual.TENANTID,
+            actual.PROCESSWORKSHOPID,
+            actual.PROCESSDAY,
+            actual.PROCESSWORKSHOP,
+            plan.PLANPRODUCEVOLUME, -- 本周计划加工量
+            plan.YPLANPRODUCEVOLUME, -- 昨日计划加工量
+            actual.ACTUALPRODUCEVOLUME,
+            actual.YACTUALPRODUCEVOLUME
+        from plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY = actual.PROCESSDAY
             )
+
         select
-            plan.PROCESSWORKSHOPID
-             ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
-        --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
-        from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by plan.PROCESSWORKSHOPID
-        union -- mysql 该版本不支持full join,通过left join 和right join配合
-        select
-            actual.PROCESSWORKSHOPID
-             ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(sum(if(YEARWEEK(plan.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),plan.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(plan.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),plan.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(sum(if(YEARWEEK(actual.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),actual.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
-             ,IFNULL(ROUND(sum(if(DATE(actual.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),actual.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
+            total.PROCESSWORKSHOPID
+             ,total.PROCESSWORKSHOP
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.PLANPRODUCEVOLUME,null)),2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YPLANPRODUCEVOLUME,null)),2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
+             ,IFNULL(ROUND(sum(if(YEARWEEK(total.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1),total.ACTUALPRODUCEVOLUME,null)),2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
+             ,IFNULL(ROUND(sum(if(DATE(total.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),total.YACTUALPRODUCEVOLUME,null)),2),0) AS 'YACTUALPRODUCEVOLUME' -- 昨日实际已加工(吨)
         --              ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
 --                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
-            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
+            ,IFNULL(ROUND(AVG(total.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by actual.PROCESSWORKSHOPID
+            total  group by total.PROCESSWORKSHOPID
     </select>
     <select id="selectAvgZjProcessPhoto" resultType="com.rongwei.bsentity.domain.ApsReportZjProcessPhoto">
         with months as (