From 388d87d5534a056268777cd37d877075bc79929c Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期四, 15 五月 2025 10:54:28 +0800
Subject: [PATCH] 产量列表

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java |  161 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 141 insertions(+), 20 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java
index b33f90f..6f34ebc 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/screen/service/impl/MdcLargeScreenServiceImpl.java
@@ -3,13 +3,14 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.vo.DictModel;
+import org.jeecg.modules.mdc.entity.MdcEquipmentDaySummary;
 import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor;
+import org.jeecg.modules.mdc.service.IEquipmentAlarmService;
+import org.jeecg.modules.mdc.service.IMdcEquipmentDaySummaryService;
 import org.jeecg.modules.mdc.service.IMdcEquipmentService;
 import org.jeecg.modules.mdc.service.IMdcEquipmentStatisticalInfoService;
 import org.jeecg.modules.mdc.util.DateUtils;
-import org.jeecg.modules.screen.dto.EquipmentStatusOverview;
-import org.jeecg.modules.screen.dto.UtilizationMonth;
-import org.jeecg.modules.screen.dto.UtilizationMonthDto;
+import org.jeecg.modules.screen.dto.*;
 import org.jeecg.modules.screen.service.MdcLargeScreenService;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.service.IMdcProductionService;
@@ -18,6 +19,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -41,6 +43,12 @@
     @Resource
     private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService;
 
+    @Resource
+    private IEquipmentAlarmService equipmentAlarmService;
+
+    @Resource
+    private IMdcEquipmentDaySummaryService mdcEquipmentDaySummaryService;
+
     /**
      * 璁惧鐘舵�佹儏鍐�
      *
@@ -50,6 +58,7 @@
     @Override
     public EquipmentStatusOverview equipmentStatusOverview(String productionId) {
         EquipmentStatusOverview equipmentStatusOverview = new EquipmentStatusOverview();
+        // 璁惧鐘舵��
         List<MdcEquipmentMonitor> equipmentMonitorList = mdcEquipmentService.getEquipmentMonitorList(productionId);
         if (equipmentMonitorList != null && !equipmentMonitorList.isEmpty()) {
             equipmentStatusOverview.setEquipmentCount(equipmentMonitorList.size());
@@ -62,7 +71,7 @@
                                 equipmentStatusOverview.setWaitCount(equipmentStatusOverview.getWaitCount() + 1);
                                 break;
                             case 3:
-                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount());
+                                equipmentStatusOverview.setRunCount(equipmentStatusOverview.getRunCount() + 1);
                                 break;
                             case 22:
                                 equipmentStatusOverview.setErrorCount(equipmentStatusOverview.getErrorCount() + 1);
@@ -84,6 +93,12 @@
                     }
                 }
             }
+        }
+        // mes浜ч噺
+        MdcEquipmentDaySummary mdcEquipmentDaySummary = mdcEquipmentDaySummaryService.statisticsQty(productionId);
+        if (mdcEquipmentDaySummary != null) {
+            equipmentStatusOverview.setQualifiedQty(mdcEquipmentDaySummary.getQualifiedQty());
+            equipmentStatusOverview.setPlanQty(mdcEquipmentDaySummary.getPlanQty());
         }
         return equipmentStatusOverview;
     }
@@ -115,12 +130,12 @@
         result.put("dateList", dateList);
 
         // 璁$畻姣忎釜瀛愮敓浜х殑鏈堝害鍒╃敤鐜�
-        List<UtilizationMonthDto> utilizationMonthDtoList = mdcProductionList.stream()
+        List<UtilizationRateDto> utilizationMonthDtoList = mdcProductionList.stream()
                 .map(mdcProduction -> createUtilizationMonthDto(mdcProduction, dateLists))
                 .collect(Collectors.toList());
 
         // 璁$畻鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼
-        UtilizationMonthDto totalUtilizationMonthDto = createTotalUtilizationMonthDto(productionId, dateLists);
+        UtilizationRateDto totalUtilizationMonthDto = createTotalUtilizationMonthDto(productionId, dateLists);
         utilizationMonthDtoList.add(totalUtilizationMonthDto);
 
         result.put("dataList", utilizationMonthDtoList);
@@ -128,15 +143,121 @@
     }
 
     /**
+     * 璁惧鍛ㄥ埄鐢ㄧ巼瓒嬪娍
+     *
+     * @param productionId
+     * @return
+     */
+    @Override
+    public Map<String, Object> weekUtilizationTendency(String productionId) {
+        Map<String, Object> result = new HashMap<>();
+
+        // 鑾峰彇瀛愮敓浜у垪琛�
+        List<MdcProduction> mdcProductionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId));
+
+        if (mdcProductionList == null || mdcProductionList.isEmpty()) {
+            return result;
+        }
+        // 鐢熸垚鍛ㄨ寖鍥�
+        List<String> dateList = DateUtils.getNearWeek();
+        result.put("dateList", dateList);
+        // 璁$畻姣忎釜宸ユ鐨勫埄鐢ㄧ巼
+        List<UtilizationRateDto> utilizationMonthDtoList = mdcProductionList.stream().map(mdcProduction -> {
+            UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
+            utilizationRateDto.setProductionId(mdcProduction.getId());
+            utilizationRateDto.setProductionName(mdcProduction.getProductionName());
+            List<UtilizationRate> utilizationRates = dateList.stream()
+                    .map(date -> {
+                        UtilizationRate utilizationMonth = new UtilizationRate();
+                        utilizationMonth.setDate(date);
+                        BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date.replaceAll("-", ""));
+                        utilizationMonth.setUtilizationRate(utilizationRate);
+                        return utilizationMonth;
+                    }).collect(Collectors.toList());
+            utilizationRateDto.setUtilizationRateList(utilizationRates);
+            return utilizationRateDto;
+        }).collect(Collectors.toList());
+        //璁$畻鎬诲巶鐨勫埄鐢ㄧ巼
+        UtilizationRateDto utilizationRateDto = new UtilizationRateDto();
+        utilizationRateDto.setProductionName("鎬诲巶");
+        List<UtilizationRate> utilizationRates = dateList.stream()
+                .map(date -> {
+                    UtilizationRate utilizationMonth = new UtilizationRate();
+                    utilizationMonth.setDate(date);
+                    BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeekTotal(productionId, date.replaceAll("-", ""));
+                    utilizationMonth.setUtilizationRate(utilizationRate);
+                    return utilizationMonth;
+                })
+                .collect(Collectors.toList());
+        utilizationRateDto.setUtilizationRateList(utilizationRates);
+        utilizationMonthDtoList.add(utilizationRateDto);
+        result.put("dataList", utilizationMonthDtoList);
+        return result;
+    }
+
+    /**
+     * 璁惧鏃ュ埄鐢ㄧ巼
+     *
+     * @param productionId
+     * @return
+     */
+    @Override
+    public Map<String, Object> dayUtilizationTendency(String productionId) {
+        Map<String, Object> result = new HashMap<>();
+        // 鑾峰彇瀛愮敓浜у垪琛�
+        List<MdcProduction> mdcProductionList = mdcProductionService.list(
+                new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId)
+        );
+
+        if (mdcProductionList == null || mdcProductionList.isEmpty()) {
+            return result;
+        }
+        List<String> productionList = mdcProductionList.stream().map(MdcProduction::getProductionName).collect(Collectors.toList());
+        result.put("productionList", productionList);
+
+        String date = LocalDate.now().minusDays(1).toString().replaceAll("-", "");
+        List<UtilizationDayDto> utilizationDayDtos = mdcProductionList.stream().map(mdcProduction -> {
+            UtilizationDayDto utilizationDayDto = new UtilizationDayDto();
+            utilizationDayDto.setProductionName(mdcProduction.getProductionName());
+            BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationWeek(mdcProduction.getId(), date);
+            utilizationDayDto.setUtilizationRate(utilizationRate);
+            return utilizationDayDto;
+        }).collect(Collectors.toList());
+        result.put("dataList", utilizationDayDtos);
+        return result;
+    }
+
+    /**
+     * 璁惧鎶ヨ淇℃伅
+     *
+     * @param productionId
+     * @return
+     */
+    @Override
+    public List<AlarmInfoDto> getAlarmInfo(String productionId) {
+        return equipmentAlarmService.getAlarmInfo(productionId);
+    }
+
+    /**
+     * 宸ユ鍒楄〃
+     * @param productionId
+     * @return
+     */
+    @Override
+    public List<MdcProduction> productionList(String productionId) {
+        return mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, productionId).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0));
+    }
+
+    /**
      * 鍒涘缓瀛愮敓浜х殑鏈堝害鍒╃敤鐜� DTO
      */
-    private UtilizationMonthDto createUtilizationMonthDto(MdcProduction mdcProduction, List<String[]> dateLists) {
-        UtilizationMonthDto utilizationMonthDto = new UtilizationMonthDto();
+    private UtilizationRateDto createUtilizationMonthDto(MdcProduction mdcProduction, List<String[]> dateLists) {
+        UtilizationRateDto utilizationMonthDto = new UtilizationRateDto();
         utilizationMonthDto.setProductionId(mdcProduction.getId());
         utilizationMonthDto.setProductionName(mdcProduction.getProductionName());
 
-        List<UtilizationMonth> utilizationMonthList = calculateUtilizationRates(mdcProduction.getId(), dateLists);
-        utilizationMonthDto.setUtilizationMonthList(utilizationMonthList);
+        List<UtilizationRate> utilizationMonthList = calculateUtilizationRates(mdcProduction.getId(), dateLists);
+        utilizationMonthDto.setUtilizationRateList(utilizationMonthList);
 
         return utilizationMonthDto;
     }
@@ -144,12 +265,12 @@
     /**
      * 鍒涘缓鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼 DTO
      */
-    private UtilizationMonthDto createTotalUtilizationMonthDto(String productionId, List<String[]> dateLists) {
-        UtilizationMonthDto utilizationMonthDto = new UtilizationMonthDto();
+    private UtilizationRateDto createTotalUtilizationMonthDto(String productionId, List<String[]> dateLists) {
+        UtilizationRateDto utilizationMonthDto = new UtilizationRateDto();
         utilizationMonthDto.setProductionName("鎬诲巶");
 
-        List<UtilizationMonth> utilizationMonthList = calculateUtilizationRatesTotal(productionId, dateLists);
-        utilizationMonthDto.setUtilizationMonthList(utilizationMonthList);
+        List<UtilizationRate> utilizationMonthList = calculateUtilizationRatesTotal(productionId, dateLists);
+        utilizationMonthDto.setUtilizationRateList(utilizationMonthList);
 
         return utilizationMonthDto;
     }
@@ -157,11 +278,11 @@
     /**
      * 璁$畻瀛愮敓浜х殑鏈堝害鍒╃敤鐜�
      */
-    private List<UtilizationMonth> calculateUtilizationRates(String productionId, List<String[]> dateLists) {
+    private List<UtilizationRate> calculateUtilizationRates(String productionId, List<String[]> dateLists) {
         return dateLists.stream()
                 .map(dates -> {
-                    UtilizationMonth utilizationMonth = new UtilizationMonth();
-                    utilizationMonth.setMonth(dates[2]);
+                    UtilizationRate utilizationMonth = new UtilizationRate();
+                    utilizationMonth.setDate(dates[2]);
                     BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationMonth(productionId, dates[0], dates[1]);
                     utilizationMonth.setUtilizationRate(utilizationRate);
                     return utilizationMonth;
@@ -172,11 +293,11 @@
     /**
      * 璁$畻鎬诲巶鐨勬湀搴﹀埄鐢ㄧ巼
      */
-    private List<UtilizationMonth> calculateUtilizationRatesTotal(String productionId, List<String[]> dateLists) {
+    private List<UtilizationRate> calculateUtilizationRatesTotal(String productionId, List<String[]> dateLists) {
         return dateLists.stream()
                 .map(dates -> {
-                    UtilizationMonth utilizationMonth = new UtilizationMonth();
-                    utilizationMonth.setMonth(dates[2]);
+                    UtilizationRate utilizationMonth = new UtilizationRate();
+                    utilizationMonth.setDate(dates[2]);
                     BigDecimal utilizationRate = mdcEquipmentStatisticalInfoService.computeUtilizationMonthTotal(productionId, dates[0], dates[1]);
                     utilizationMonth.setUtilizationRate(utilizationRate);
                     return utilizationMonth;

--
Gitblit v1.9.3