From 167236d51d359745c6abe0b6ed827b2ff7d37a4b Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期二, 17 六月 2025 17:39:42 +0800
Subject: [PATCH] 领导层首页-运行监控界面

---
 src/main/java/com/whyc/service/LeaderHomeService.java |   94 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 79 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/whyc/service/LeaderHomeService.java b/src/main/java/com/whyc/service/LeaderHomeService.java
index 2648e42..1281442 100644
--- a/src/main/java/com/whyc/service/LeaderHomeService.java
+++ b/src/main/java/com/whyc/service/LeaderHomeService.java
@@ -1,6 +1,5 @@
 package com.whyc.service;
 
-import com.sun.org.glassfish.gmbal.NameValue;
 import com.whyc.constant.BattSingalIdEnum;
 import com.whyc.constant.Capperformance;
 import com.whyc.constant.DevAlarmEnum;
@@ -18,6 +17,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ThreadPoolExecutor;
@@ -60,7 +61,6 @@
     private BatttestdataIdService battTestDataIdService;
 
 
-
     public Response getAll(Integer userId) {
         Response response = new Response();
         Map<String,Object> map = new HashMap<>();
@@ -89,9 +89,9 @@
             testDataInfoStatistics(userId, map);
             latch.countDown();
         });
-        //TODO 璁惧鏁伴噺淇℃伅缁熻
+        //10绫诲熀纭�璧勪骇淇℃伅缁熻
         poolExecutor.execute(() -> {
-            //deviceInfoStatistics(userId, map);
+            deviceInfoStatistics(userId, map);
             latch.countDown();
         });
 
@@ -109,10 +109,73 @@
         return response;
     }
 
+    private void deviceInfoStatistics(Integer userId, Map<String, Object> map) {
+        NameValueIntDto baseDto = new NameValueIntDto();
+        int powerCount = powerInfService.getListByUserId(userId).size();
+        map.put("powerCount", powerCount);
+        List<BattInf> battInfList = battInfService.getListByUserId(userId);
+        int battCount = battInfList.size();
+        Map<Integer, List<BattInf>> devIdMap = battInfList.stream().collect(Collectors.groupingBy(BattInf::getDevId));
+        map.put("devCount", devIdMap.size());
+        map.put("battCount",battCount);
+        int monCountTotal = 0;
+        for (int i = 0; i < battCount; i++) {
+            int monCount = battInfList.get(i).getMoncount().intValue();
+            monCountTotal += monCount;
+        }
+        map.put("monCount", monCountTotal);
+
+        LocalDateTime now = LocalDateTime.now();
+        //鏈勾绗竴澶�
+        LocalDateTime yearStart = now.withDayOfYear(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        Date yearStartTime = DateUtil.convertToDate(yearStart);
+        //鍘诲勾鐨勭涓�澶�
+        LocalDateTime lastYearStart = now.minusYears(1).withDayOfYear(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        //鍘诲勾鐨勬渶鍚庝竴澶�
+        int lastYear = now.minusYears(1).getYear();
+        LocalDate lastDayOfLastYear = LocalDate.of(lastYear, 12, 31);
+        LocalDateTime lastYearEnd = lastDayOfLastYear.atTime(LocalTime.MAX);
+        Date lastYearStartTime = DateUtil.convertToDate(lastYearStart);
+        Date lastYearEndTime = DateUtil.convertToDate(lastYearEnd);
+
+        //鏈勾宸叉斁鐢电數姹犳暟閲�
+        //鏈勾鏈斁鐢电數姹犳暟閲�
+        //鍘诲勾宸叉斁鐢电數姹犳暟閲�
+        //鍘诲勾鏈斁鐢电數姹犳暟閲�
+        int hrDisBattCount = battTestDataInfService.getHrDisCount(userId,yearStartTime,null);
+        int hrNoDisBattCount = battCount - hrDisBattCount;
+        int hrDisBattCountLastYear = battTestDataInfService.getHrDisCount(userId,lastYearStartTime,lastYearEndTime);
+        int hrNoDisBattCountLastYear = battCount - hrDisBattCountLastYear;
+        map.put("hrDisBattCount", hrDisBattCount);
+        map.put("hrNoDisBattCount", hrNoDisBattCount);
+        map.put("hrDisBattCountLastYear", hrDisBattCountLastYear);
+        map.put("hrNoDisBattCountLastYear", hrNoDisBattCountLastYear);
+
+        //鏈勾浼樿壇鍔e寲鎹熷潖鏁伴噺
+        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,yearStartTime,null);
+        long battGoodCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count();
+        long battBadCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count();
+        long battDamageCount = battCapInfoList.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count();
+        //鍘诲勾浼樿壇鍔e寲鎹熷潖鏁伴噺
+        List<BattCapInfoDto> battCapInfoListLastYear = getBattCapInfo(battInfList,lastYearStartTime,lastYearEndTime);
+        long battGoodCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_1.getStateName())).count();
+        long battBadCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_2.getStateName())).count();
+        long battDamageCountLastYear = battCapInfoListLastYear.stream().filter(battCapInfo -> battCapInfo.getPerformance().equals(Capperformance.BATTSTATE_3.getStateName())).count();
+        map.put("battGoodCount", battGoodCount);
+        map.put("battBadCount", battBadCount);
+        map.put("battDamageCount", battDamageCount);
+        map.put("battGoodCountLastYear", battGoodCountLastYear);
+        map.put("battBadCountLastYear", battBadCountLastYear);
+        map.put("battDamageCountLastYear", battDamageCountLastYear);
+        //TODO 浼樿壇鐢垫簮鏁伴噺
+        map.put("powerGoodCount","浼樿壇鍒ゅ畾鏍囧噯寰呯‘瀹�" );
+    }
+
+
     private void alarmRealtimeStatistics(Integer userId, Map<String, Object> map) {
         //鐢垫睜鍛婅淇℃伅缁熻
         List<AlarmDto> battAlarmListNew = new ArrayList<>();
-        List<AlarmDto> battAlarmList = battAlarmService.getListByUserId(userId);
+        List<AlarmDto> battAlarmList = battAlarmService.getListByUserId(userId, null);
         //鍚堝苟鍗曚綋鍛婅鐨勫憡璀︿俊鎭�,瀵笰larmDto涓瑼lmId 鍦�17~28涔嬮棿鐨勮繘琛屽悎骞�.
         Map<String, List<AlarmDto>> mergeMap = battAlarmList.stream()
                 .filter(alarm -> alarm.getAlmId() >= 17 && alarm.getAlmId() <= 28)
@@ -141,7 +204,7 @@
         });
 
         //璁惧鍛婅淇℃伅缁熻
-        List<AlarmDto> devAlarmList = devAlarmService.getListByUserId(userId);
+        List<AlarmDto> devAlarmList = devAlarmService.getListByUserId(userId,null);
         //瀵瑰憡璀﹀悕绉拌祴鍊�
         devAlarmList.forEach(alarmDto -> {
             alarmDto.setAlmName(DevAlarmEnum.getValue(alarmDto.getAlmId()));
@@ -149,7 +212,7 @@
 
         //鐢垫簮鍛婅淇℃伅缁熻
         List<AlarmDto> powerAlarmListNew = new ArrayList<>();
-        List<AlarmDto> powerAlarmList = powerAlarmService.getListByUserId(userId);
+        List<AlarmDto> powerAlarmList = powerAlarmService.getListByUserId(userId,null);
         //鏁存祦鍣ㄦ�绘晠闅滃悎骞�
         //ALARM_3300001(3300001,"鏁存祦鍣�1鎬绘晠闅滃憡璀�"),
         //    ALARM_3300002(3300002,"鏁存祦鍣�2鎬绘晠闅滃憡璀�"),
@@ -625,7 +688,7 @@
     }
 
 
-    private void testDataInfoStatistics(Integer userId, Map<String, Object> map) {
+    protected void testDataInfoStatistics(Integer userId, Map<String, Object> map) {
         List<BatttestdataInf> testInfList = battTestDataInfService.getListByUserId(userId);
         //杩囨护鍑烘湰鏈堢殑
         LocalDateTime startOfMonth = DateUtil.getStartOfMonth();
@@ -702,7 +765,7 @@
         return testInfOfMonth;
     }
 
-    private void batteryInfoStatistics(Integer userId, Map<String, Object> map) {
+    protected void batteryInfoStatistics(Integer userId, Map<String, Object> map) {
         List<BattInf> battInfList = battInfService.getListByUserId(userId);
         Map<String, List<BattInf>> brandMap = battInfList.stream().collect(Collectors.groupingBy(BattInf::getProduct));
         Map<Float, List<BattInf>> volMap = battInfList.stream().collect(Collectors.groupingBy(BattInf::getMonvolstd));
@@ -722,7 +785,7 @@
         map.put("battGroupInfo_vol",volList);
     }
 
-    private void powerInfoStatistics(Integer userId, Map<String, Object> map) {
+    protected void powerInfoStatistics(Integer userId, Map<String, Object> map) {
         List<PowerInf> powerInfList = powerInfService.getListByUserId(userId);
         Map<String, List<PowerInf>> brandMap = powerInfList.stream().collect(Collectors.groupingBy(PowerInf::getCompany));
         Map<Integer, List<PowerInf>> typeMap = powerInfList.stream().collect(Collectors.groupingBy(PowerInf::getPowerType));
@@ -792,7 +855,7 @@
         battInf.setProduct(brand);
         //鏌ヨ婊¤冻鏉′欢鐨勮搫鐢垫睜鍒楄〃
         List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
-        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
+        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
         //data,鍜宒ata2鍒嗗埆杩斿洖 缁熻鏁伴噺鍜� 绔欑偣浼樿壇,鍔e寲,鎹熷潖 鍓嶄簩鐨勪俊鎭�
         List<NameValueIntDto> data = new ArrayList<>();
         List<NameValueListDto> data2 = new ArrayList<>();
@@ -836,7 +899,7 @@
         battInf.setInuseTime(inuseTimeStart);
         //鏌ヨ婊¤冻鏉′欢鐨勮搫鐢垫睜鍒楄〃
         List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
-        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
+        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
 
         //data,鏍规嵁鍝佺墝鍒嗙粍缁熻鐧惧垎姣�
         Map<String, List<BattCapInfoDto>> brandMap = battCapInfoList.stream().collect(Collectors.groupingBy(BattCapInfoDto::getProduct));
@@ -943,7 +1006,7 @@
         battInf.setProduct(brand);
         //鏌ヨ婊¤冻鏉′欢鐨勮搫鐢垫睜鍒楄〃
         List<BattInf> battInfList = battInfService.getListByCondition(userId,battInf);
-        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList);
+        List<BattCapInfoDto> battCapInfoList = getBattCapInfo(battInfList,null,null);
 
         //data,TODO 鎶曡繍鏃堕棿鐨勭淮搴﹀弬鏁�,鍏堝浐瀹氬彉閲�,鍚庣画浠庢暟鎹簱鑾峰彇
         //time1鍜宼ime2鐨勫崟浣嶄负骞�
@@ -1055,7 +1118,7 @@
 
     }
 
-    public List<BattCapInfoDto> getBattCapInfo(List<BattInf> battInfList) {
+    public List<BattCapInfoDto> getBattCapInfo(List<BattInf> battInfList,Date startTime, Date endTime) {
         //鑾峰彇鏍稿浼樺姡锛屾崯鍧忓弬鏁�
         List<AppParam> paramList=appParamService.getHrParam();
         Float badValue=0f;
@@ -1086,7 +1149,8 @@
             capInfo.setInuseTime(battInf.getInuseTime());
 
             //2.鑾峰彇鐢垫睜缁勫湪缁欏畾鏃堕棿娈电殑鏀剧數璁板綍(鎸囧畾鏃堕棿娈电殑鏍囧噯鏍稿鏀剧數)
-            BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), battInf.getInuseTime(),null);
+            //BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), battInf.getInuseTime(),null);
+            BatttestdataInf testInf = battTestDataInfService.getLastStandardTestDataByTime(battInf.getBattgroupId(), startTime,endTime);
             if (testInf == null) {
                 capInfo.setRealCap(0f);
                 capInfo.setCapPercentage("0");

--
Gitblit v1.9.1