Browse Source

aps-大屏

sucheng 4 months ago
parent
commit
fcfef6d0a4

+ 24 - 23
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

@@ -1286,6 +1286,8 @@
                 PROCESSWORKSHOPID,
                 max(PROCESSWORKSHOP) PROCESSWORKSHOP,
                 DATE(PROCESSDAY) PROCESSDAY,
+                count(if(YEARWEEK(heat.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1), -- 本周
+                         1,null)) AS haveDay, -- 本周实际出炉天数
                 count(if(YEARWEEK(heat.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1), -- 本周
                          HEATNUMBER,null)) PLANPRODUCEVOLUME, -- 本周计划加工量=炉次的数量
                 count(if(DATE(heat.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
@@ -1312,7 +1314,8 @@
                      HAVING (YEARWEEK(PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1) -- 本周
                          or DATE(PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
                  ) heat
-            group by PROCESSWORKSHOPID,DATE(PROCESSDAY)
+            group by PROCESSWORKSHOPID
+
         ),
              actual as (
                  -- 按照车间分组统计本周退火工序类别实际加工量
@@ -1320,6 +1323,8 @@
                      PROCESSWORKSHOPID,
                      max(PROCESSWORKSHOP) PROCESSWORKSHOP,
                      DATE(PROCESSDAY) PROCESSDAY,
+                     count(if(YEARWEEK(heat.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1), -- 本周
+                              1,null)) AS haveDay, -- 本周实际出炉天数
                      count(if(YEARWEEK(heat.PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1), -- 本周
                               HEATNUMBER,null)) ACTUALPRODUCEVOLUME, -- 本周实际已加工(炉次)
                      count(if(DATE(heat.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
@@ -1341,35 +1346,35 @@
                            and arr.REPORTWORKSTATUS='已报工'
                            and apo.TENANTID=#{tenantId}
                          group by
-                             apope.PROCESSDEVICEID,concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
+                             concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
                          HAVING (YEARWEEK(PROCESSDAY,1)=YEARWEEK(CURRENT_DATE,1) -- 本周
                              or DATE(PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
                      ) heat
-                 group by PROCESSWORKSHOPID,DATE(PROCESSDAY)
+                 group by PROCESSWORKSHOPID
              )
         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' -- 昨日实际已加工(吨)
+             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
+             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
+             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
+             ,IFNULL(ROUND(actual.YACTUALPRODUCEVOLUME,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(actual.ACTUALPRODUCEVOLUME/actual.haveDay,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' -- 昨日实际已加工(吨)
+             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'WEEKPLANPRODUCEVOLUME' -- 本周计划加工(吨)
+             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
+             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'WEEKACTUALPRODUCEVOLUME' -- 本周实际已加工(吨)
+             ,IFNULL(ROUND(actual.YACTUALPRODUCEVOLUME,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(actual.ACTUALPRODUCEVOLUME/actual.haveDay,2),0) COMPLETIONRATIO -- 本周日平均
         from
             plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID group by actual.PROCESSWORKSHOPID
     </select>
@@ -1389,7 +1394,7 @@
                           -- 按照车间分组统计本月退火工序类别计划加工量
                           select
                               concat(apope.PROCESSDEVICEID,apope.PLANSTARTDATE) HEATNUMBER, -- 炉次(设备ID+计划开工时间)
-                              max(apope.PLANSTARTDATE) PROCESSDAY
+                              max(apope.PLANENDDATE) PROCESSDAY
                           from
                               aps_process_operation_process_equ apope
                                   join aps_process_operation apo on apo.ID = apope.PROCESSID
@@ -1399,8 +1404,6 @@
                             and app.PROCESSCATEGORY='30' -- 退火
                             and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
                             and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
-                            and (YEAR(apope.PLANSTARTDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANSTARTDATE) = MONTH(CURRENT_DATE) -- 本月
-                              or DATE(apope.PLANSTARTDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
                             and apo.TENANTID=#{tenantId}
                           group by
                               concat(apope.PROCESSDEVICEID,apope.PLANSTARTDATE) -- 计划炉次
@@ -1416,7 +1419,7 @@
                          -- 按照车间分组统计本月退火工序类别实际加工量
                          select
                              concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER) HEATNUMBER, -- 炉次
-                             max(DATE(arr.STARTWORKTIME)) PROCESSDAY
+                             max(DATE(arr.REPORTWORKTIME)) PROCESSDAY
                          from
                              aps_report_records arr
                                  join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
@@ -1428,7 +1431,7 @@
                            and arr.REPORTWORKSTATUS='已报工'
                            and apo.TENANTID=#{tenantId}
                          group by
-                             apope.PROCESSDEVICEID,concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
+                             concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
                      ) heat
                  group by month_year
              )
@@ -1457,7 +1460,7 @@
                           -- 按照车间分组统计本月退火工序类别计划加工量
                           select
                               concat(apope.PROCESSDEVICEID,apope.PLANSTARTDATE) HEATNUMBER, -- 炉次(设备ID+计划开工时间)
-                              max(apope.PLANSTARTDATE) PROCESSDAY
+                              max(apope.PLANENDDATE) PROCESSDAY
                           from
                               aps_process_operation_process_equ apope
                                   join aps_process_operation apo on apo.ID = apope.PROCESSID
@@ -1467,8 +1470,6 @@
                             and app.PROCESSCATEGORY='30' -- 退火
                             and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
                             and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
-                            and (YEAR(apope.PLANSTARTDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANSTARTDATE) = MONTH(CURRENT_DATE) -- 本月
-                              or DATE(apope.PLANSTARTDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
                             and apo.TENANTID=#{tenantId}
                           group by
                               concat(apope.PROCESSDEVICEID,apope.PLANSTARTDATE) -- 计划炉次
@@ -1484,7 +1485,7 @@
                          -- 按照车间分组统计本月退火工序类别实际加工量
                          select
                              concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER) HEATNUMBER, -- 炉次
-                             max(DATE(arr.STARTWORKTIME)) PROCESSDAY
+                             max(DATE(arr.REPORTWORKTIME)) PROCESSDAY
                          from
                              aps_report_records arr
                                  join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
@@ -1496,7 +1497,7 @@
                            and arr.REPORTWORKSTATUS='已报工'
                            and apo.TENANTID=#{tenantId}
                          group by
-                             apope.PROCESSDEVICEID,concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
+                             concat(apope.PROCESSDEVICEID,arr.STARTWORKTIME,arr.HEATNUMBER)
                      ) heat
                  group by month_year
              )