Ver Fonte

aps-大屏

sucheng há 7 meses atrás
pai
commit
470482f092

+ 7 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProductionOrderDao.java

@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Entity com.rongwei.training.domain.ApsProductionOrder
@@ -128,6 +129,12 @@ public interface ApsProductionOrderDao extends BaseMapper<ApsProductionOrderDo>
 
     @Select("TRUNCATE TABLE ${tableName}")
     void truncateByTableName(@Param("tableName") String tableName);
+
+    List<ApsReportYearAndMonth> selectNowWeekActualGetOrderNum();
+
+    List<ApsReportYearAndMonth> selectNowWeekActualProduceNum();
+
+    List<Map<String, Object>> selectPlanMap();
 }
 
 

+ 137 - 36
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProductionOrderServiceImpl.java

@@ -30,6 +30,7 @@ import com.rongwei.wfentity.sys.ProcessInstDo;
 import com.rongwei.wfentity.sys.RunTaskDo;
 import com.rongwei.wfserver.wfcommon.sys.service.ProcessInstService;
 import com.rongwei.wfserver.wfcommon.sys.service.RunTaskService;
+import org.hibernate.validator.internal.constraintvalidators.bv.time.futureorpresent.FutureOrPresentValidatorForMonthDay;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -40,6 +41,8 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.temporal.WeekFields;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
@@ -1208,7 +1211,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                 //如果第一个月是今年的数据,全年只取月份
                 if (list.get(0).getYearmonth().split("-")[0].equals(nowYear)) {
                     list.forEach(item -> {
-                        item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                        item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                     });
                 }
                 //如果第一个月不是今年的,第一个月取年月,第二年第一个月取年月,其余只取月份
@@ -1218,14 +1221,14 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     for (int i = 0; i < list.size(); i++) {
                         ApsReportThProcessPhoto item = list.get(i);
                         if (i == 0) {
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                             continue;
                         }
                         if (!isNowYear && item.getYearmonth().split("-")[0].equals(nowYear)) {
                             isNowYear = true;
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                         } else {
-                            item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                            item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                         }
                     }
                 }
@@ -1253,6 +1256,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         //根据工厂分别生成指定数据
         SaveConstans.COMPANY_MAP.forEach((key, value) -> {
             List<ApsReportThProcessTable> list = this.baseMapper.selectThProcessTable(key);
+            list = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessworkshop())).collect(Collectors.toList());
             if (ObjectUtil.isNotEmpty(list)) {
                 list.forEach(item -> {
                     item.setId(SecurityUtil.getUUID());
@@ -1283,7 +1287,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                 //如果第一个月是今年的数据,全年只取月份
                 if (list.get(0).getYearmonth().split("-")[0].equals(nowYear)) {
                     list.forEach(item -> {
-                        item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                        item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                     });
                 }
                 //如果第一个月不是今年的,第一个月取年月,第二年第一个月取年月,其余只取月份
@@ -1293,14 +1297,14 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     for (int i = 0; i < list.size(); i++) {
                         ApsReportZjProcessPhoto item = list.get(i);
                         if (i == 0) {
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                             continue;
                         }
                         if (!isNowYear && item.getYearmonth().split("-")[0].equals(nowYear)) {
                             isNowYear = true;
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                         } else {
-                            item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                            item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                         }
                     }
                 }
@@ -1329,6 +1333,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         //根据工厂分别生成指定数据
         SaveConstans.COMPANY_MAP.forEach((key, value) -> {
             List<ApsReportZjProcessTable> list = this.baseMapper.selectZjProcessTable(key);
+            list = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessworkshop())).collect(Collectors.toList());
             if (ObjectUtil.isNotEmpty(list)) {
                 list.forEach(item -> {
                     item.setId(SecurityUtil.getUUID());
@@ -1359,7 +1364,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                 //如果第一个月是今年的数据,全年只取月份
                 if (list.get(0).getYearmonth().split("-")[0].equals(nowYear)) {
                     list.forEach(item -> {
-                        item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                        item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                     });
                 }
                 //如果第一个月不是今年的,第一个月取年月,第二年第一个月取年月,其余只取月份
@@ -1369,14 +1374,14 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     for (int i = 0; i < list.size(); i++) {
                         ApsReportJzProcessPhoto item = list.get(i);
                         if (i == 0) {
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                             continue;
                         }
                         if (!isNowYear && item.getYearmonth().split("-")[0].equals(nowYear)) {
                             isNowYear = true;
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                         } else {
-                            item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                            item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                         }
                     }
                 }
@@ -1404,6 +1409,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         //根据工厂分别生成指定数据
         SaveConstans.COMPANY_MAP.forEach((key, value) -> {
             List<ApsReportJzProcessTable> list = this.baseMapper.selectProcessTable(key);
+            list = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessworkshop())).collect(Collectors.toList());
             if (ObjectUtil.isNotEmpty(list)) {
                 list.forEach(item -> {
                     item.setId(SecurityUtil.getUUID());
@@ -1435,7 +1441,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                 //如果第一个月是今年的数据,全年只取月份
                 if (list.get(0).getYearmonth().split("-")[0].equals(nowYear)) {
                     list.forEach(item -> {
-                        item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                        item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                     });
                 }
                 //如果第一个月不是今年的,第一个月取年月,第二年第一个月取年月,其余只取月份
@@ -1445,14 +1451,14 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     for (int i = 0; i < list.size(); i++) {
                         ApsReportCastRollPhoto item = list.get(i);
                         if (i == 0) {
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                             continue;
                         }
                         if (!isNowYear && item.getYearmonth().split("-")[0].equals(nowYear)) {
                             isNowYear = true;
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1] + " ");
                         } else {
-                            item.setYearmonth(item.getYearmonth().split("-")[1] + "");
+                            item.setYearmonth(item.getYearmonth().split("-")[1] + " ");
                         }
                     }
                 }
@@ -1482,6 +1488,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
         //根据工厂分别生成指定数据
         SaveConstans.COMPANY_MAP.forEach((key, value) -> {
             List<ApsReportCastRollTable> list = this.baseMapper.selectCastRollData(key);
+            list = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessworkshop())).collect(Collectors.toList());
             if (ObjectUtil.isNotEmpty(list)) {
                 list.forEach(item -> {
                     item.setId(SecurityUtil.getUUID());
@@ -1513,7 +1520,7 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                 //如果第一个月是今年的数据,全年只取月份
                 if (list.get(0).getYearmonth().split("-")[0].equals(nowYear)) {
                     list.forEach(item -> {
-                        item.setYearmonth(item.getYearmonth().split("-")[1] + "月");
+                        item.setYearmonth(item.getYearmonth().split("-")[1]+" ");
                     });
                 }
                 //如果第一个月不是今年的,第一个月取年月,第二年第一个月取年月,其余只取月份
@@ -1523,14 +1530,14 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
                     for (int i = 0; i < list.size(); i++) {
                         ApsReportOrderFinishPhoto item = list.get(i);
                         if (i == 0) {
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1]);
                             continue;
                         }
                         if (!isNowYear && item.getYearmonth().split("-")[0].equals(nowYear)) {
                             isNowYear = true;
-                            item.setYearmonth(item.getYearmonth().split("-")[0] + "年" + item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[0] + "." + item.getYearmonth().split("-")[1]);
                         } else {
-                            item.setYearmonth(item.getYearmonth().split("-")[1] + "月");
+                            item.setYearmonth(item.getYearmonth().split("-")[1]+" ");
                         }
                     }
                 }
@@ -1645,10 +1652,10 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             } else {
                 item.setPlanordernumyearpercent("100");
             }
-            //拼接展示字段
-            String pre = item.getPlanordernumyearpercent();
-            item.setActualordernumyearshow(
-                    item.getActualordernumyear() + "(" + pre + "%)");
+//            //拼接展示字段
+//            String pre = item.getPlanordernumyearpercent();
+//            item.setActualordernumyearshow(
+//                    item.getActualordernumyear() + "(" + pre + "%)");
         });
         //==================今年完成比例=今年实际已完成/今年实际已接单===================
         resInsertList.forEach(item -> {
@@ -1664,10 +1671,10 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             } else {
                 item.setActualfinishnumyearpercent("100");
             }
-            //拼接展示字段
-            String pre = item.getActualfinishnumyearpercent();
-            item.setActualfinishnumyearshow(
-                    item.getActualfinishnumyear() + "(" + pre + "%)");
+//            //拼接展示字段
+//            String pre = item.getActualfinishnumyearpercent();
+//            item.setActualfinishnumyearshow(
+//                    item.getActualfinishnumyear() + "(" + pre + "%)");
         });
         //==================本月计划接单量==================
         List<ApsReportYearAndMonth> apsReportYearAndMonthList3 = this.baseMapper.selectNowMonthPlanGetOrderNum();
@@ -1719,10 +1726,10 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             } else {
                 item.setPlanordernummonthpercent("100");
             }
-            //拼接展示字段
-            String pre = item.getPlanordernummonthpercent();
-            item.setActualordernummonthshow(
-                    item.getActualordernummonth() + "(" + pre + "%)");
+//            //拼接展示字段
+//            String pre = item.getPlanordernummonthpercent();
+//            item.setActualordernummonthshow(
+//                    item.getActualordernummonth() + "(" + pre + "%)");
         });
         //==================本月完成比例=本月实际已完成/本月实际已接单===================
         resInsertList.forEach(item -> {
@@ -1738,10 +1745,104 @@ public class ApsProductionOrderServiceImpl extends ServiceImpl<ApsProductionOrde
             } else {
                 item.setActualfinishnummonthpercent("100");
             }
-            //拼接展示字段
-            String pre = item.getActualfinishnummonthpercent();
-            item.setActualfinishnummonthshow(
-                    item.getActualfinishnummonth() + "(" + pre + "%)");
+//            //拼接展示字段
+//            String pre = item.getActualfinishnummonthpercent();
+//            item.setActualfinishnummonthshow(
+//                    item.getActualfinishnummonth() + "(" + pre + "%)");
+        });
+
+
+        //==================本周计划接单量==================
+        //获取 每个工厂、每年、每月的平均计划量
+        List<Map<String, Object>> planMapList = this.baseMapper.selectPlanMap();
+        resInsertList.forEach(item->{
+            List<Map<String, Object>> mapList = planMapList.stream().filter(item2 -> ObjectUtil.isNotEmpty(item2.getOrDefault("tenantid", "").toString()) && item2.getOrDefault("tenantid", "").toString().equals(item.getTenantid()))
+                    .collect(Collectors.toList());
+            if (ObjectUtil.isNotEmpty(mapList)){
+                //获取当前周的7天日期
+                // 获取当前日期
+                LocalDate currentDate = LocalDate.now();
+
+                // 获取当前周的第一天和最后一天
+                WeekFields weekFields = WeekFields.of(Locale.getDefault());
+                LocalDate firstDayOfWeek = currentDate.with(weekFields.dayOfWeek(), 1);
+
+                //当前周的日期
+                List<String> dayWeekList = new LinkedList<>();
+                for (int i = 0; i < 7; i++) {
+                    LocalDate day = firstDayOfWeek.plusDays(i);
+                    dayWeekList.add(DateUtil.format(day.atStartOfDay(),"yyyy-MM-dd"));
+                }
+                //计算本周计划
+                BigDecimal weekPlan = BigDecimal.ZERO;
+                for (String day : dayWeekList) {
+                    String[] split = day.split("-");
+                    String year = split[0];
+                    String month = split[1];
+                    Map<String, Object> map = mapList.stream().filter(item2 -> ObjectUtil.isNotEmpty(item2.getOrDefault("year", "")) && item2.getOrDefault("year", "").equals(year))
+                            .findFirst().orElse(null);
+                    if (ObjectUtil.isNotEmpty(map) && ObjectUtil.isNotEmpty(map.getOrDefault(month,""))) {
+                        weekPlan = weekPlan.add(new BigDecimal(map.getOrDefault(month,"0").toString()));
+                    }
+                }
+                //保留两位小数
+                weekPlan = weekPlan.setScale(2, RoundingMode.HALF_UP);
+                item.setPlanordernumweek(weekPlan.toString());
+            }
+        });
+        //==================本周实际已接单===================
+        List<ApsReportYearAndMonth> apsReportYearAndWeekList4 = this.baseMapper.selectNowWeekActualGetOrderNum();
+        for (ApsReportYearAndMonth apsReportYearAndMonth : apsReportYearAndWeekList4) {
+            if (ObjectUtil.isEmpty(apsReportYearAndMonth)) {
+                continue;
+            }
+            if (ObjectUtil.isNotEmpty(apsReportYearAndMonth.getTenantid()) && SaveConstans.COMPANY_MAP.containsKey(apsReportYearAndMonth.getTenantid())) {
+                resInsertList.stream().filter(item -> item.getTenantid().equals(apsReportYearAndMonth.getTenantid())).findFirst().ifPresent(item -> {
+                    item.setActualordernumweek(apsReportYearAndMonth.getActualordernumweek());
+                });
+            }
+        }
+        //==================本周实际已完成===================
+        List<ApsReportYearAndMonth> apsReportYearAndWeekList5 = this.baseMapper.selectNowWeekActualProduceNum();
+        for (ApsReportYearAndMonth apsReportYearAndMonth : apsReportYearAndWeekList5) {
+            if (ObjectUtil.isEmpty(apsReportYearAndMonth)) {
+                continue;
+            }
+            if (ObjectUtil.isNotEmpty(apsReportYearAndMonth.getTenantid()) && SaveConstans.COMPANY_MAP.containsKey(apsReportYearAndMonth.getTenantid())) {
+                resInsertList.stream().filter(item -> item.getTenantid().equals(apsReportYearAndMonth.getTenantid())).findFirst().ifPresent(item -> {
+                    item.setActualfinishnumweek(apsReportYearAndMonth.getActualfinishnumweek());
+                });
+            }
+        }
+        //==================本周接单量完成比例 = 本周实际已接单/本周计划接单量===================
+        resInsertList.forEach(item -> {
+            if (ObjectUtil.isNotEmpty(item.getPlanordernumweek())
+                    && ObjectUtil.isNotEmpty(item.getActualordernumweek())
+                    && new BigDecimal(item.getPlanordernumweek()).compareTo(BigDecimal.ZERO) != 0
+                    && new BigDecimal(item.getActualordernumweek()).compareTo(BigDecimal.ZERO) != 0) {
+                //计算比例,保留4位小数,以便百分比保留两位小数
+                item.setPlanordernumweekhpercent(
+                        new BigDecimal(item.getActualordernumweek()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(item.getPlanordernumweek()), 2, RoundingMode.HALF_UP).toString());
+            } else if (new BigDecimal(item.getActualordernumweek()).compareTo(BigDecimal.ZERO) == 0) {
+                item.setPlanordernumweekhpercent("0");
+            } else {
+                item.setPlanordernumweekhpercent("100");
+            }
+        });
+        //==================本周完成比例=本周实际已完成/本周实际已接单===================
+        resInsertList.forEach(item -> {
+            if (ObjectUtil.isNotEmpty(item.getActualordernumweek())
+                    && ObjectUtil.isNotEmpty(item.getActualfinishnumweek())
+                    && new BigDecimal(item.getActualordernumweek()).compareTo(BigDecimal.ZERO) != 0
+                    && new BigDecimal(item.getActualfinishnumweek()).compareTo(BigDecimal.ZERO) != 0) {
+                //计算比例,保留4位小数,以便百分比保留两位小数
+                item.setActualfinishnumweekhpercent(
+                        new BigDecimal(item.getActualfinishnumweek()).multiply(BigDecimal.valueOf(100)).divide(new BigDecimal(item.getActualordernummonth()), 2, RoundingMode.HALF_UP).toString());
+            } else if (new BigDecimal(item.getActualfinishnumweek()).compareTo(BigDecimal.ZERO) == 0) {
+                item.setActualfinishnumweekhpercent("0");
+            } else {
+                item.setActualfinishnumweekhpercent("100");
+            }
         });
         //================更新数据==================
         if (!resInsertList.isEmpty()) {

+ 346 - 252
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProductionOrderDao.xml

@@ -702,78 +702,82 @@
     </select>
     <select id="selectCastRollData" resultType="com.rongwei.bsentity.domain.ApsReportCastRollTable">
         with plan as (
-            -- 按照车间分组统计本铸轧工序类别计划加工量
+            -- 按照车间分组统计本铸轧工序类别计划加工量
             select
                 apo.TENANTID,
                 apope.PROCESSWORKSHOPID,
-                max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE), -- 本月
-                       (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) PLANPRODUCEVOLUME, -- 本月计划加工量
-                sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                       (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
-            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='10' -- 铸轧
-              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
-        ),
-             actual as (
-                 -- 按照车间分组统计本月铸轧工序类别实际加工量
-                 select
-                     apo.TENANTID,
-                     apope.PROCESSWORKSHOPID,
-                     max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                     sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and MONTH(arr.REPORTWORKTIME) = MONTH(CURRENT_DATE), -- 本月
-                            apo.SINGLEROLLWEIGHT,null)) ACTUALPRODUCEVOLUME, -- 本月实际已加工量
-                     sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                            apo.SINGLEROLLWEIGHT,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='10' -- 铸轧
-                   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
-             )
+            DATE(apope.PLANENDDATE) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE), -- 本周
+           (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) PLANPRODUCEVOLUME, -- 本周计划加工量
+            sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+           (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
+        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='10' -- 铸轧
+          and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+          and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+          and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            actual as (
+        -- 按照车间分组统计本周铸轧工序类别实际加工量
+        select
+            apo.TENANTID,
+            apope.PROCESSWORKSHOPID,
+            DATE(arr.REPORTWORKTIME) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE), -- 本周
+            apo.SINGLEROLLWEIGHT,null)) ACTUALPRODUCEVOLUME, -- 本周实际已加工量
+            sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+            apo.SINGLEROLLWEIGHT,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='10' -- 铸轧
+          and arr.REPORTWORKSTATUS='已报工'
+          and (YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            )
         select
             plan.PROCESSWORKSHOPID
              ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'PLANPRODUCEVOLUME' -- 本月计划加工(吨)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'ACTUALPRODUCEVOLUME' -- 本月实际已加工(吨)
-             ,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(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
         union -- mysql 该版本不支持full join,通过left join 和right join配合
         select
             actual.PROCESSWORKSHOPID
              ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'PLANPRODUCEVOLUME' -- 本月计划加工(吨)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'ACTUALPRODUCEVOLUME' -- 本月实际已加工(吨)
-             ,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(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
     </select>
     <select id="selectCastRollPhotoAvg" resultType="com.rongwei.bsentity.domain.ApsReportCastRollPhoto">
         with months as (
@@ -883,78 +887,82 @@
     </select>
     <select id="selectProcessTable" resultType="com.rongwei.bsentity.domain.ApsReportJzProcessTable">
         with plan as (
-            -- 按照车间分组统计本精整工序类别计划加工量
+            -- 按照车间分组统计本精整工序类别计划加工量
             select
                 apo.TENANTID,
                 apope.PROCESSWORKSHOPID,
-                max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE), -- 本月
-                       (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) PLANPRODUCEVOLUME, -- 本月计划加工量
-                sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                       (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
-            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='40' -- 精整
-              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
-        ),
-             actual as (
-                 -- 按照车间分组统计本月精整工序类别实际加工量
-                 select
-                     apo.TENANTID,
-                     apope.PROCESSWORKSHOPID,
-                     max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                     sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and MONTH(arr.REPORTWORKTIME) = MONTH(CURRENT_DATE), -- 本月
-                            (LENGTH(trim( BOTH ',' FROM arr.BATCHNUMBER))-LENGTH(REPLACE(trim( BOTH ',' FROM arr.BATCHNUMBER), ',', '')) + 1) * IFNULL(arr.ACTUALROLLWEIGHT,apo.SINGLEROLLWEIGHT),null)) ACTUALPRODUCEVOLUME, -- 本月实际已加工量=报工批次号数量*实际输入单卷重
-                     sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                            (LENGTH(trim( BOTH ',' FROM arr.BATCHNUMBER))-LENGTH(REPLACE(trim( BOTH ',' FROM arr.BATCHNUMBER), ',', '')) + 1) * IFNULL(arr.ACTUALROLLWEIGHT,apo.SINGLEROLLWEIGHT),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='40' -- 精整
-                   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
-             )
+            DATE(apope.PLANENDDATE) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE), -- 本周
+           (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) PLANPRODUCEVOLUME, -- 本周计划加工量
+            sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+           (apope.PLANPROCESSRALL-apope.CANCELROLL)*apo.SINGLEROLLWEIGHT,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
+        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='40' -- 精整
+          and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+          and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+          and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            actual as (
+        -- 按照车间分组统计本周精整工序类别实际加工量
+        select
+            apo.TENANTID,
+            apope.PROCESSWORKSHOPID,
+            DATE(arr.REPORTWORKTIME) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE), -- 本周
+            (LENGTH(trim( BOTH ',' FROM arr.BATCHNUMBER))-LENGTH(REPLACE(trim( BOTH ',' FROM arr.BATCHNUMBER), ',', '')) + 1) * IFNULL(arr.ACTUALROLLWEIGHT,apo.SINGLEROLLWEIGHT),null)) ACTUALPRODUCEVOLUME, -- 本周实际已加工量=报工批次号数量*实际输入单卷重
+            sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+            (LENGTH(trim( BOTH ',' FROM arr.BATCHNUMBER))-LENGTH(REPLACE(trim( BOTH ',' FROM arr.BATCHNUMBER), ',', '')) + 1) * IFNULL(arr.ACTUALROLLWEIGHT,apo.SINGLEROLLWEIGHT),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='40' -- 精整
+          and arr.REPORTWORKSTATUS='已报工'
+          and (YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            )
         select
             plan.PROCESSWORKSHOPID
              ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'PLANPRODUCEVOLUME' -- 本月计划加工(吨)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'ACTUALPRODUCEVOLUME' -- 本月实际已加工(吨)
-             ,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(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
         union -- mysql 该版本不支持full join,通过left join 和right join配合
         select
             actual.PROCESSWORKSHOPID
              ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) AS 'PLANPRODUCEVOLUME' -- 本月计划加工(吨)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) AS 'YPLANPRODUCEVOLUME' -- 昨日计划加工(吨)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) AS 'ACTUALPRODUCEVOLUME' -- 本月实际已加工(吨)
-             ,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(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                        1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
     </select>
     <select id="selectProcessAvg" resultType="com.rongwei.bsentity.domain.ApsReportJzProcessPhoto">
         with months as (
@@ -1064,78 +1072,82 @@
     </select>
     <select id="selectZjProcessTable" resultType="com.rongwei.bsentity.domain.ApsReportZjProcessTable">
         with plan as (
-            -- 按照车间分组统计本轧机工序类别计划加工量
+            -- 按照车间分组统计本轧机工序类别计划加工量
             select
                 apo.TENANTID,
                 apope.PROCESSWORKSHOPID,
-                max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and MONTH(apope.PLANENDDATE) = MONTH(CURRENT_DATE), -- 本月
-                       apope.PLANPROCESSRALL-apope.CANCELROLL,null)) PLANPRODUCEVOLUME, -- 本月计划加工量
-                sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
-                       apope.PLANPROCESSRALL-apope.CANCELROLL,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
-            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='20' -- 轧机
-              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
-        ),
-             actual as (
-                 -- 按照车间分组统计本月轧机工序类别实际加工量
-                 select
-                     apo.TENANTID,
-                     apope.PROCESSWORKSHOPID,
-                     max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
-                     sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and MONTH(arr.REPORTWORKTIME) = MONTH(CURRENT_DATE), -- 本月
-                            1,null)) ACTUALPRODUCEVOLUME, -- 本月实际已加工量
-                     sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), --  昨日
-                            1,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='20' -- 轧机
-                   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
-             )
+            DATE(apope.PLANENDDATE) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE), -- 本周
+            apope.PLANPROCESSRALL-apope.CANCELROLL,null)) PLANPRODUCEVOLUME, -- 本周计划加工量
+            sum(if(DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+            apope.PLANPROCESSRALL-apope.CANCELROLL,null)) YPLANPRODUCEVOLUME -- 昨日计划加工量
+        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='20' -- 轧机
+          and apo.PROCESSSTATUS in ('30','40','50') -- 已发布
+          and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0 -- 计划加工卷数- 已取消卷数合计
+          and (YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE) and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            actual as (
+        -- 按照车间分组统计本周轧机工序类别实际加工量
+        select
+            apo.TENANTID,
+            apope.PROCESSWORKSHOPID,
+            DATE(arr.REPORTWORKTIME) PROCESSDAY,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            sum(if(YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE), -- 本周
+            1,null)) ACTUALPRODUCEVOLUME, -- 本周实际已加工量
+            sum(if(DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), --  昨日
+            1,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='20' -- 轧机
+          and arr.REPORTWORKSTATUS='已报工'
+          and (YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE) and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE) -- 本周
+           or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+          and apo.TENANTID=#{tenantId}
+        group by
+            apope.PROCESSWORKSHOPID,PROCESSDAY
+            )
         select
             plan.PROCESSWORKSHOPID
              ,plan.PROCESSWORKSHOP
-             ,ifnull(ROUND(plan.PLANPRODUCEVOLUME,2),0) PLANPRODUCEVOLUME -- 本月计划加工(道次)
-             ,ifnull(ROUND(plan.YPLANPRODUCEVOLUME,2),0) YPLANPRODUCEVOLUME -- 昨日计划加工(道次)
-             ,ifnull(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) ACTUALPRODUCEVOLUME  -- 本月实际已加工(道次)
-             ,ifnull(ROUND(actual.YACTUALPRODUCEVOLUME,2),0) YACTUALPRODUCEVOLUME  -- 昨日实际已加工(道次)
-             ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-                 1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本月实际已完成比例
+             ,IFNULL(ROUND(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
         union -- mysql 该版本不支持full join,通过left join 和right join配合
         select
             actual.PROCESSWORKSHOPID
              ,actual.PROCESSWORKSHOP
-             ,ifnull(ROUND(plan.PLANPRODUCEVOLUME,2),0) PLANPRODUCEVOLUME -- 本月计划加工(道次)
-             ,ifnull(ROUND(plan.YPLANPRODUCEVOLUME,2),0) YPLANPRODUCEVOLUME -- 昨日计划加工(道次)
-             ,ifnull(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) ACTUALPRODUCEVOLUME  -- 本月实际已加工(道次)
-             ,ifnull(ROUND(actual.YACTUALPRODUCEVOLUME,2),0) YACTUALPRODUCEVOLUME  -- 昨日实际已加工(道次)
-             ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-                       1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本月实际已完成比例
+             ,IFNULL(ROUND(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
     </select>
     <select id="selectAvgZjProcessPhoto" resultType="com.rongwei.bsentity.domain.ApsReportZjProcessPhoto">
         with months as (
@@ -1250,87 +1262,95 @@
             select
                 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
-                     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
-                             apope.PROCESSDEVICEID+arr.HEATNUMBER 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
-                             apope.PROCESSDEVICEID,arr.HEATNUMBER
-                     ) heat
-                 group by PROCESSWORKSHOPID
-             )
+            DATE(PLANENDDATE) PROCESSDAY,
+            count(if(YEAR(heat.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(heat.PROCESSDAY) = WEEK(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,
+            apope.PLANENDDATE
+            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 WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE) -- 本周
+            or DATE(apope.PLANENDDATE) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+            and apo.TENANTID=#{tenantId}
+            group by
+            HEATNUMBER -- 计划炉次
+            ) heat
+        group by PROCESSWORKSHOPID,PROCESSDAY
+            ),
+            actual as (
+        -- 按照车间分组统计本周退火工序类别实际加工量
+        select
+            PROCESSWORKSHOPID,
+            max(PROCESSWORKSHOP) PROCESSWORKSHOP,
+            DATE(REPORTWORKTIME) PROCESSDAY,
+            count(if(YEAR(heat.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(heat.PROCESSDAY) = WEEK(CURRENT_DATE), -- 本周
+            HEATNUMBER,null)) ACTUALPRODUCEVOLUME, -- 本周实际已加工(炉次)
+            count(if(DATE(heat.PROCESSDAY) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY), -- 昨日
+            HEATNUMBER,null)) YACTUALPRODUCEVOLUME -- 昨日实际已加工(炉次)
+        from(
+            select
+            apope.PROCESSDEVICEID+arr.HEATNUMBER HEATNUMBER, -- 炉次
+            max(DATE(arr.REPORTWORKTIME)) PROCESSDAY,
+            max(apope.PROCESSWORKSHOPID) PROCESSWORKSHOPID,
+            max(apope.PROCESSWORKSHOP) PROCESSWORKSHOP,
+            arr.REPORTWORKTIME
+            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 WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE) -- 本周
+            or DATE(arr.REPORTWORKTIME) = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) -- 昨日
+            and apo.TENANTID=#{tenantId}
+            group by
+            apope.PROCESSDEVICEID,arr.HEATNUMBER
+            ) heat
+        group by PROCESSWORKSHOPID,PROCESSDAY
+            )
         select
             plan.PROCESSWORKSHOPID
              ,plan.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) PLANPRODUCEVOLUME -- 本月计划加工(炉次)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) YPLANPRODUCEVOLUME -- 昨日计划加工(炉次)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) ACTUALPRODUCEVOLUME -- 本月实际已加工(炉次)
-             ,IFNULL(ROUND(actual.YACTUALPRODUCEVOLUME,2),0) YACTUALPRODUCEVOLUME -- 昨日实际已加工(炉次)
-             ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-                 1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本月实际已完成比例
+             ,IFNULL(ROUND(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan left join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
         union -- mysql 该版本不支持full join,通过left join 和right join配合
         select
             actual.PROCESSWORKSHOPID
              ,actual.PROCESSWORKSHOP
-             ,IFNULL(ROUND(plan.PLANPRODUCEVOLUME,2),0) PLANPRODUCEVOLUME -- 本月计划加工(炉次)
-             ,IFNULL(ROUND(plan.YPLANPRODUCEVOLUME,2),0) YPLANPRODUCEVOLUME -- 昨日计划加工(炉次)
-             ,IFNULL(ROUND(actual.ACTUALPRODUCEVOLUME,2),0) ACTUALPRODUCEVOLUME -- 本月实际已加工(炉次)
-             ,IFNULL(ROUND(actual.YACTUALPRODUCEVOLUME,2),0) YACTUALPRODUCEVOLUME -- 昨日实际已加工(炉次)
-             ,ROUND(if(plan.PLANPRODUCEVOLUME is null or plan.PLANPRODUCEVOLUME = 0,
-                       1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本月实际已完成比例
+             ,IFNULL(ROUND(sum(if(YEAR(plan.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(plan.PROCESSDAY) = WEEK(CURRENT_DATE),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(YEAR(actual.PROCESSDAY) = YEAR(CURRENT_DATE) and WEEK(actual.PROCESSDAY) = WEEK(CURRENT_DATE),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,
+--                  1, actual.ACTUALPRODUCEVOLUME/plan.PLANPRODUCEVOLUME),2) COMPLETIONRATIO -- 本周实际已完成比例
+            ,IFNULL(ROUND(AVG(actual.ACTUALPRODUCEVOLUME),2),0) COMPLETIONRATIO -- 本周日平均
         from
-            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID
+            plan right join actual on plan.PROCESSWORKSHOPID=actual.PROCESSWORKSHOPID and plan.PROCESSDAY=actual.PROCESSDAY
     </select>
     <select id="selectAvgThProcessPhoto" resultType="com.rongwei.bsentity.domain.ApsReportThProcessPhoto">
         with months as (
@@ -1470,4 +1490,78 @@
         ORDER BY
             yearmonth
     </select>
+    <select id="selectNowWeekActualGetOrderNum" resultType="com.rongwei.bsentity.domain.ApsReportYearAndMonth">
+        select
+            apro.TENANTID AS 'tenantid',
+                ifnull(ROUND(sum((apope.PLANPROCESSRALL-apope.CANCELROLL)*apoom.PLANPRODROLLNUM/apo.PLANPROCESSRALL*apoom.SINGLEROLLWEIGHT),2),0) AS 'actualordernumweek' -- 本周实际接单量
+        from
+            aps_process_operation_process_equ apope
+                join aps_process_operation apo on apo.ID = apope.PROCESSID
+                join aps_process_operation_out_mater apoom on apo.id=apoom.MAINID-- 作业输出物料
+                join aps_blank_order abo on apo.BLANKID = abo.id
+                join aps_production_order apro on apro.ID = abo.PRODUCTIONORDERID
+                left join aps_product_detail apd on apoom.ORDERDETAILID = apd.id  and apo.DELETED='0'-- 订单产品明细
+                left join aps_production_merge_order apmd on apmd.ORDERNO = apd.MERGEORDERNUMBER and apmd.DELETED='0'
+        where
+            apope.deleted='0' and abo.DELETED='0' and apro.deleted='0'
+                and apd.DELETED='0' and apoom.DELETED='0'
+                and ifnull(apmd.ORDERTYPE, apro.ORDERTYPE) = '客户订单' -- 订单类型为空默认为客户订单
+                and abo.PRODUCTSTATUS in ('30','40','50')
+                and (apope.PLANPROCESSRALL-apope.CANCELROLL)>0
+                and apoom.PLANPRODROLLNUM>0
+                and YEAR(apope.PLANENDDATE) = YEAR(CURRENT_DATE)
+          and WEEK(apope.PLANENDDATE) = WEEK(CURRENT_DATE)
+        GROUP BY apro.TENANTID
+    </select>
+    <select id="selectNowWeekActualProduceNum" resultType="com.rongwei.bsentity.domain.ApsReportYearAndMonth">
+        select
+            apro.TENANTID AS 'tenantid',
+                ifnull(ROUND(sum(aro.WEIGHT),2),0) AS 'actualfinishnumweek'
+        from
+            aps_process_operation_process_equ apope
+                join aps_process_operation apo on apo.ID = apope.PROCESSID
+                join aps_blank_order abo on apo.BLANKID = abo.id
+                join aps_production_order apro on apro.ID = abo.PRODUCTIONORDERID
+                join aps_report_records arr on apope.id=arr.PROCESSEQUID
+                join aps_report_output aro on arr.id=aro.mainid
+                join aps_process_operation_out_mater apoom on aro.OUTPUTID=apoom.ID-- 作业输出物料
+                left join aps_product_detail apd on apoom.ORDERDETAILID = apd.id and apd.DELETED = '0' -- 订单产品明细
+                left join aps_production_merge_order apmd on apmd.ORDERNO = apd.MERGEORDERNUMBER and apmd.DELETED='0'
+        where
+            apope.deleted='0' and apo.DELETED='0' and abo.DELETED='0' and apro.deleted='0'
+                and arr.deleted='0' and aro.DELETED='0' and apoom.DELETED = '0'
+                and ifnull(apmd.ORDERTYPE, apro.ORDERTYPE) = '客户订单' -- 订单类型为空默认为客户订单
+                and arr.CHECKSTATUS='已检验'
+                and aro.QUALIFIED='是'
+                and apoom.PLANPRODROLLNUM>0
+                and YEAR(arr.REPORTWORKTIME) = YEAR(CURRENT_DATE)
+          and WEEK(arr.REPORTWORKTIME) = WEEK(CURRENT_DATE)
+        GROUP BY apro.TENANTID
+    </select>
+    <select id="selectPlanMap" resultType="java.util.Map">
+        SELECT
+            aop.TENANTID AS 'tenantid',
+                aop.PARTYEAR AS 'year',
+                ifnull( ROUND( sum( ONEM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-01-01'))), 4 ), 0 ) AS '01',
+                ifnull( ROUND( sum( TWOM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-02-01'))), 4 ), 0 ) AS '02',
+                ifnull( ROUND( sum( THREEM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-03-01'))), 4 ), 0 ) AS '03',
+                ifnull( ROUND( sum( FOURM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-04-01'))), 4 ), 0 ) AS '04',
+                ifnull( ROUND( sum( FIVEM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-05-01'))), 4 ), 0 ) AS '05',
+                ifnull( ROUND( sum( SIXM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-06-01'))), 4 ), 0 ) AS '06',
+                ifnull( ROUND( sum( SEVENM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-07-01'))), 4 ), 0 ) AS '07',
+                ifnull( ROUND( sum( EIGHTM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-08-01'))), 4 ), 0 ) AS '08',
+                ifnull( ROUND( sum( NINEM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-09-01'))), 4 ), 0 ) AS '09',
+                ifnull( ROUND( sum( TENM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-10-01'))), 4 ), 0 ) AS '10',
+                ifnull( ROUND( sum( ELEVENM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-11-01'))), 4 ), 0 ) AS '11',
+                ifnull( ROUND( sum( TWELVEM )/DAY(LAST_DAY(CONCAT(aop.PARTYEAR, '-12-01'))), 4 ), 0 ) AS '12'
+        FROM
+            aps_accept_order_plan aop
+                JOIN aps_accept_order_plan_detail aopd ON aop.id = aopd.MAINID
+        WHERE
+            aop.deleted = '0'
+          AND aopd.deleted = '0'
+          AND aop.PARTYEAR IN (YEAR(CURRENT_DATE),YEAR(CURRENT_DATE)-1)
+        GROUP BY
+            aop.TENANTID,aop.PARTYEAR
+    </select>
 </mapper>

+ 12 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportCastRollTable.java

@@ -83,6 +83,18 @@ public class ApsReportCastRollTable extends BaseDo implements Serializable {
     @TableField(value = "COMPLETIONRATIO")
     private String completionratio;
 
+    /**
+     * 本周计划加工(吨)
+     */
+    @TableField(value = "WEEKPLANPRODUCEVOLUME")
+    private String weekplanproducevolume;
+
+    /**
+     * 本周实际已加工(吨)
+     */
+    @TableField(value = "WEEKACTUALPRODUCEVOLUME")
+    private String weekactualproducevolume;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 12 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportJzProcessTable.java

@@ -83,6 +83,18 @@ public class ApsReportJzProcessTable extends BaseDo implements Serializable {
     @TableField(value = "COMPLETIONRATIO")
     private String completionratio;
 
+    /**
+     * 本周计划加工(吨)
+     */
+    @TableField(value = "WEEKPLANPRODUCEVOLUME")
+    private String weekplanproducevolume;
+
+    /**
+     * 本周实际已加工(吨)
+     */
+    @TableField(value = "WEEKACTUALPRODUCEVOLUME")
+    private String weekactualproducevolume;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 11 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportThProcessTable.java

@@ -83,6 +83,17 @@ public class ApsReportThProcessTable extends BaseDo implements Serializable {
     @TableField(value = "COMPLETIONRATIO")
     private String completionratio;
 
+    /**
+     * 本周计划加工(吨)
+     */
+    @TableField(value = "WEEKPLANPRODUCEVOLUME")
+    private String weekplanproducevolume;
+
+    /**
+     * 本周实际已加工(吨)
+     */
+    @TableField(value = "WEEKACTUALPRODUCEVOLUME")
+    private String weekactualproducevolume;
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 30 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportYearAndMonth.java

@@ -124,6 +124,36 @@ public class ApsReportYearAndMonth extends BaseDo implements Serializable {
     @TableField(value = "ACTUALFINISHNUMMONTHSHOW")
     private String actualfinishnummonthshow;
 
+    /**
+     * 本周计划接单量
+     */
+    @TableField(value = "PLANORDERNUMWEEK")
+    private String planordernumweek = "0";
+
+    /**
+     * 本周实际已接单
+     */
+    @TableField(value = "ACTUALORDERNUMWEEK")
+    private String actualordernumweek = "0";
+
+    /**
+     * 本周实际已完成
+     */
+    @TableField(value = "ACTUALFINISHNUMWEEK")
+    private String actualfinishnumweek = "0";
+
+    /**
+     * 本周接单量完成比例
+     */
+    @TableField(value = "PLANORDERNUMWEEKHPERCENT")
+    private String planordernumweekhpercent = "0";
+
+    /**
+     * 本周实际完成比例
+     */
+    @TableField(value = "ACTUALFINISHNUMWEEKHPERCENT")
+    private String actualfinishnumweekhpercent = "0";
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 11 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsReportZjProcessTable.java

@@ -83,6 +83,17 @@ public class ApsReportZjProcessTable extends BaseDo implements Serializable {
     @TableField(value = "COMPLETIONRATIO")
     private String completionratio;
 
+    /**
+     * 本周计划加工(吨)
+     */
+    @TableField(value = "WEEKPLANPRODUCEVOLUME")
+    private String weekplanproducevolume;
+
+    /**
+     * 本周实际已加工(吨)
+     */
+    @TableField(value = "WEEKACTUALPRODUCEVOLUME")
+    private String weekactualproducevolume;
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }