Bladeren bron

aps-大屏

sucheng 7 maanden geleden
bovenliggende
commit
e3153e3524
1 gewijzigde bestanden met toevoegingen van 148 en 103 verwijderingen
  1. 148 103
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

+ 148 - 103
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

@@ -1245,55 +1245,68 @@
             yearmonth
     </select>
     <select id="selectThProcessTable" resultType="com.rongwei.bsentity.domain.ApsReportThProcessTable">
+        -- 退火生产情况:
         with plan as (
-            -- 按照车间分组统计本月退火工序类别计划加工量
             select
-                apo.TENANTID,
-                apope.PROCESSWORKSHOPID,
-                max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                count(DISTINCT if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE), -- 本月
-                                  apope.PROCESSDEVICEID+apope.PLANENDDATE,0)) PLANPRODUCEVOLUME, -- 本月计划加工量=炉次(设备ID+计划开工时间)的数量
-                count(DISTINCT if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                                  apope.PROCESSDEVICEID+apope.PLANENDDATE,0)) YPLANPRODUCEVOLUME -- 昨日计划加工量=炉次(设备ID+计划开工时间)的数量
-            from
-                aps_process_operation_process_equ apope
-                    join aps_process_operation apo on apo.ID = apope.PROCESSID
-                    join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-            where
-                apope.deleted='0' and apo.DELETED='0'
-              and app.PROCESSCATEGORY='30' -- 退火
-              and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
-              and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
-              and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE) -- 本月
-                or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
-              and apo.TENANTID=#{tenantId}
-            group by
-                apope.PROCESSWORKSHOPID
+                PROCESSWORKSHOPID,
+                max(PROCESSWORKSHOP) PROCESSWORKSHOP,
+                count(if(YEAR(heat.PROCESSDAY) = YEAR(CURRENT_DATE) and MONTH(heat.PROCESSDAY) = MONTH(CURRENT_DATE), -- 本月
+                                  HEATNUMBER,null)) PLANPRODUCEVOLUME, -- 本月计划加工量=炉次的数量
+                count(if(DATE(heat.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+                                  HEATNUMBER,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量=炉次的数量
+            from (
+                     -- 按照车间分组统计本月退火工序类别计划加工量
+                     select
+                         max(apope.PROCESSWORKSHOPID) PROCESSWORKSHOPID,
+                         max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+                         apope.PROCESSDEVICEID+apope.PLANSTARTDATE HEATNUMBER, -- 炉次(设备ID+计划开工时间)
+                         max(apope.PLANENDDATE) PROCESSDAY
+                     from
+                         aps_process_operation_process_equ apope
+                             join aps_process_operation apo on apo.ID = apope.PROCESSID
+                             join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                     where
+                         apope.deleted='0' and apo.DELETED='0'
+                       and app.PROCESSCATEGORY='30' -- 退火
+                       and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+                       and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+                       and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE) -- 本月
+                         or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+                       and apo.TENANTID=#{tenantId}
+                     group by
+                         HEATNUMBER -- 计划炉次
+                 ) heat
+            group by PROCESSWORKSHOPID
         ),
              actual as (
                  -- 按照车间分组统计本月退火工序类别实际加工量
                  select
-                     apo.TENANTID,
-                     apope.PROCESSWORKSHOPID,
-                     max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                     count(DISTINCT if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and MONTH(arr.REPORTWORKTIME) = MONTH(CURRENT_DATE),
-                                       arr.HEATNUMBER, null)) ACTUALPRODUCEVOLUME, -- 本月实际已加工量
-                     count(DISTINCT if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY),
-                                       arr.HEATNUMBER, null)) YACTUALPRODUCEVOLUME -- 昨日实际已加工量
-                 from
-                     aps_report_records arr
-                         join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
-                         join aps_process_operation apo on apo.ID = apope.PROCESSID
-                         join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-                 where
-                     apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
-                   and app.PROCESSCATEGORY='30' -- 退火
-                   and arr.REPORTWORKSTATUS='已报工'
-                   and (YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and MONTH(arr.REPORTWORKTIME) = MONTH(CURRENT_DATE) -- 本月
-                     or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
-                   and apo.TENANTID=#{tenantId}
-                 group by
-                     apope.PROCESSWORKSHOPID
+                     PROCESSWORKSHOPID,
+                     max(PROCESSWORKSHOP) PROCESSWORKSHOP,
+                     count(if(YEAR(heat.PROCESSDAY) = YEAR(CURRENT_DATE) and MONTH(heat.PROCESSDAY) = MONTH(CURRENT_DATE), -- 本月
+                                       HEATNUMBER,null)) ACTUALPRODUCEVOLUME, -- 本月实际已加工(炉次)
+                     count(if(DATE(heat.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+                                       HEATNUMBER,null)) YACTUALPRODUCEVOLUME -- 昨日实际已加工(炉次)
+                 from(
+                         select
+                             arr.HEATNUMBER, -- 炉次
+                             max(DATE(arr.REPORTWORKTIME)) PROCESSDAY,
+                             max(apope.PROCESSWORKSHOPID) PROCESSWORKSHOPID,
+                             max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP
+                         from
+                             aps_report_records arr
+                                 join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
+                                 join aps_process_operation apo on apo.ID = apope.PROCESSID
+                                 join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                         where
+                             apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
+                           and app.PROCESSCATEGORY='30' -- 退火
+                           and arr.REPORTWORKSTATUS='已报工'
+                           and apo.TENANTID=#{tenantId}
+                         group by
+                             arr.HEATNUMBER
+                     ) heat
+                 group by PROCESSWORKSHOPID
              )
         select
             plan.PROCESSWORKSHOPID
@@ -1326,41 +1339,57 @@
         ),
              plan as (
                  -- 近12个月退火计划加工量
+
+                 -- 按照车间分组统计本月退火工序类别计划加工量
                  select
-                     DATE_FORMAT(apope.PLANENDDATE, '%Y-%m') month_year,
-                     count(DISTINCT apope.PROCESSDEVICEID+apope.PLANENDDATE) PLANPRODUCEVOLUME -- 当月计划加工量=炉次(设备ID+计划开工时间)的数量
-                 from
-                     aps_process_operation_process_equ apope
-                         join aps_process_operation apo on apo.ID = apope.PROCESSID
-                         join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-                 where
-                     apope.deleted='0' and apo.DELETED='0'
-                   and app.PROCESSCATEGORY='30' -- 退火
-                   and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
-                   and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
-                   and apope.PLANENDDATE between DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 11 MONTH), '%Y-%m-01') and DATE_FORMAT(LAST_DAY(CURRENT_DATE()),'%Y-%m-%d 23:59:59') -- 近12个月计划
-                   and apo.TENANTID=#{tenantId}
-                 group by
-                     month_year
+                     DATE_FORMAT(heat.PROCESSDAY, '%Y-%m') month_year,
+                     count(HEATNUMBER) PLANPRODUCEVOLUME -- 当月计划加工量=炉次的数量
+                 from (
+                          -- 按照车间分组统计本月退火工序类别计划加工量
+                          select
+                              apope.PROCESSDEVICEID+apope.PLANSTARTDATE HEATNUMBER, -- 炉次(设备ID+计划开工时间)
+                              max(apope.PLANENDDATE) PROCESSDAY
+                          from
+                              aps_process_operation_process_equ apope
+                                  join aps_process_operation apo on apo.ID = apope.PROCESSID
+                                  join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                          where
+                              apope.deleted='0' and apo.DELETED='0'
+                            and app.PROCESSCATEGORY='30' -- 退火
+                            and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+                            and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+                            and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE) -- 本月
+                              or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+                            and apo.TENANTID=#{tenantId}
+                          group by
+                              HEATNUMBER -- 计划炉次
+                      ) heat
+                 group by month_year
              ),
              actual as (
                  -- 近12个月退火实际加工量
                  select
-                     DATE_FORMAT(arr.REPORTWORKTIME, '%Y-%m') month_year,
-                     count(DISTINCT arr.HEATNUMBER) ACTUALPRODUCEVOLUME -- 当月实际已加工量=炉次的数量
-                 from
-                     aps_report_records arr
-                         join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
-                         join aps_process_operation apo on apo.ID = apope.PROCESSID
-                         join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-                 where
-                     apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
-                   and app.PROCESSCATEGORY='30' -- 退火
-                   and arr.REPORTWORKSTATUS='已报工'
-                   and arr.REPORTWORKTIME between DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 11 MONTH), '%Y-%m-01') and DATE_FORMAT(LAST_DAY(CURRENT_DATE()),'%Y-%m-%d 23:59:59') -- 近12个月计划
-                   and apo.TENANTID=#{tenantId}
-                 group by
-                     month_year
+                     DATE_FORMAT(heat.PROCESSDAY, '%Y-%m') month_year,
+                     count(HEATNUMBER) ACTUALPRODUCEVOLUME -- 当月实际已加工量=炉次的数量
+                 from(
+                         -- 按照车间分组统计本月退火工序类别实际加工量
+                         select
+                             arr.HEATNUMBER, -- 炉次
+                             max(DATE(arr.REPORTWORKTIME)) PROCESSDAY
+                         from
+                             aps_report_records arr
+                                 join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
+                                 join aps_process_operation apo on apo.ID = apope.PROCESSID
+                                 join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                         where
+                             apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
+                           and app.PROCESSCATEGORY='30' -- 退火
+                           and arr.REPORTWORKSTATUS='已报工'
+                           and apo.TENANTID=#{tenantId}
+                         group by
+                             arr.HEATNUMBER
+                     ) heat
+                 group by month_year
              )
         -- 计划加工量月平均值,实际已加工量月平均值
         select
@@ -1378,41 +1407,57 @@
         ),
              plan as (
                  -- 近12个月退火计划加工量
+
+                 -- 按照车间分组统计本月退火工序类别计划加工量
                  select
-                     DATE_FORMAT(apope.PLANENDDATE, '%Y-%m') month_year,
-                     count(DISTINCT apope.PROCESSDEVICEID+apope.PLANENDDATE) PLANPRODUCEVOLUME -- 当月计划加工量=炉次(设备ID+计划开工时间)的数量
-                 from
-                     aps_process_operation_process_equ apope
-                         join aps_process_operation apo on apo.ID = apope.PROCESSID
-                         join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-                 where
-                     apope.deleted='0' and apo.DELETED='0'
-                   and app.PROCESSCATEGORY='30' -- 退火
-                   and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
-                   and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
-                   and apope.PLANENDDATE between DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 11 MONTH), '%Y-%m-01') and DATE_FORMAT(LAST_DAY(CURRENT_DATE()),'%Y-%m-%d 23:59:59') -- 近12个月计划
-                   and apo.TENANTID=#{tenantId}
-                 group by
-                     month_year
+                     DATE_FORMAT(heat.PROCESSDAY, '%Y-%m') month_year,
+                     count(HEATNUMBER) PLANPRODUCEVOLUME -- 当月计划加工量=炉次的数量
+                 from (
+                          -- 按照车间分组统计本月退火工序类别计划加工量
+                          select
+                              apope.PROCESSDEVICEID+apope.PLANSTARTDATE HEATNUMBER, -- 炉次(设备ID+计划开工时间)
+                              max(apope.PLANENDDATE) PROCESSDAY
+                          from
+                              aps_process_operation_process_equ apope
+                                  join aps_process_operation apo on apo.ID = apope.PROCESSID
+                                  join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                          where
+                              apope.deleted='0' and apo.DELETED='0'
+                            and app.PROCESSCATEGORY='30' -- 退火
+                            and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+                            and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+                            and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE) -- 本月
+                              or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+                            and apo.TENANTID=#{tenantId}
+                          group by
+                              HEATNUMBER -- 计划炉次
+                      ) heat
+                 group by month_year
              ),
              actual as (
                  -- 近12个月退火实际加工量
                  select
-                     DATE_FORMAT(arr.REPORTWORKTIME, '%Y-%m') month_year,
-                     count(DISTINCT arr.HEATNUMBER) ACTUALPRODUCEVOLUME -- 当月实际已加工量=炉次的数量
-                 from
-                     aps_report_records arr
-                         join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
-                         join aps_process_operation apo on apo.ID = apope.PROCESSID
-                         join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
-                 where
-                     apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
-                   and app.PROCESSCATEGORY='30' -- 退火
-                   and arr.REPORTWORKSTATUS='已报工'
-                   and arr.REPORTWORKTIME between DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 11 MONTH), '%Y-%m-01') and DATE_FORMAT(LAST_DAY(CURRENT_DATE()),'%Y-%m-%d 23:59:59') -- 近12个月计划
-                   and apo.TENANTID=#{tenantId}
-                 group by
-                     month_year
+                     DATE_FORMAT(heat.PROCESSDAY, '%Y-%m') month_year,
+                     count(HEATNUMBER) ACTUALPRODUCEVOLUME -- 当月实际已加工量=炉次的数量
+                 from(
+                         -- 按照车间分组统计本月退火工序类别实际加工量
+                         select
+                             arr.HEATNUMBER, -- 炉次
+                             max(DATE(arr.REPORTWORKTIME)) PROCESSDAY
+                         from
+                             aps_report_records arr
+                                 join aps_process_operation_process_equ apope  on apope.id=arr.PROCESSEQUID
+                                 join aps_process_operation apo on apo.ID = apope.PROCESSID
+                                 join aps_production_processes app on app.PRODUCTPROCESSNAME=apo.PROCESS
+                         where
+                             apope.deleted='0' and apo.DELETED='0' and arr.deleted='0'
+                           and app.PROCESSCATEGORY='30' -- 退火
+                           and arr.REPORTWORKSTATUS='已报工'
+                           and apo.TENANTID=#{tenantId}
+                         group by
+                             arr.HEATNUMBER
+                     ) heat
+                 group by month_year
              )
         select
             DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL months.n MONTH), '%Y-%m') yearmonth,