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/MonitorService.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 230 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/whyc/service/MonitorService.java b/src/main/java/com/whyc/service/MonitorService.java new file mode 100644 index 0000000..dad9daa --- /dev/null +++ b/src/main/java/com/whyc/service/MonitorService.java @@ -0,0 +1,230 @@ +package com.whyc.service; + +import com.whyc.constant.BattAlarmIdEnum; +import com.whyc.dto.NameValueIntDto; +import com.whyc.dto.Response; +import com.whyc.factory.ThreadPoolExecutorFactory; +import com.whyc.pojo.db_alarm.BattalarmData; +import com.whyc.pojo.db_ram_db.DeviceState; +import com.whyc.pojo.db_station.BattInf; +import com.whyc.pojo.db_station.StationInf; +import com.whyc.pojo.db_user.BaojigroupPower; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.stream.Collectors; + +@Service +public class MonitorService { + + @Autowired + private LeaderHomeService leaderHomeService; + + @Autowired + private StationInfService stationInfService; + + @Autowired + private PowerInfService powerInfService; + + @Autowired + private BattInfService battInfService; + + @Autowired + private PwrdevAlarmService powerAlarmService; + + @Autowired + private DevalarmDataService devAlarmDataService; + + @Autowired + private BattalarmDataService battAlarmDataService; + + @Autowired + private DeviceStateService deviceStateService; + + + @Autowired + private BaoJiGroupPowerService baoJiGroupPowerService; + + + public Response getAll(Integer userId) { + Response response = new Response(); + Map<String,Object> map = new HashMap<>(); + + CountDownLatch latch = new CountDownLatch(9); + ThreadPoolExecutor poolExecutor = ThreadPoolExecutorFactory.getPoolExecutor(); + + //TODO 浜ゆ祦鍛婅缁熻 寰呮槑纭憡璀﹀垎绫� + poolExecutor.execute(() -> { + //acAlarmStatistics(userId, map); + latch.countDown(); + }); + + //璧勪骇淇℃伅缁熻 + poolExecutor.execute(() -> { + assetsInfoStatistics(userId, map); + latch.countDown(); + }); + + //钃勭數姹犳牳瀹逛俊鎭粺璁� + poolExecutor.execute(() -> { + leaderHomeService.testDataInfoStatistics(userId, map); + latch.countDown(); + }); + + //鐢垫睜鍝佺墝淇℃伅缁熻 + poolExecutor.execute(() -> { + leaderHomeService.batteryInfoStatistics(userId, map); + latch.countDown(); + }); + + //鐢垫簮鍝佺墝淇℃伅缁熻 + poolExecutor.execute(() -> { + leaderHomeService.powerInfoStatistics(userId, map); + latch.countDown(); + }); + + //TODO 鐢垫簮鍛婅淇℃伅缁熻 寰呮槑纭憡璀﹀垎绫� + poolExecutor.execute(() -> { + //powerAlarmStatistics(userId, map); + latch.countDown(); + }); + + //鍗曡妭钃勭數姹犲憡璀︾粺璁� + poolExecutor.execute(() -> { + battMonAlarmStatistics(userId, map); + latch.countDown(); + }); + + //璁惧瀹炴椂鐘舵�佺粺璁� + poolExecutor.execute(() -> { + deviceStatusStatistics(userId, map); + latch.countDown(); + }); + + //鐝粍缁熻 鍙� 鍛婅缁熻 + poolExecutor.execute(() -> { + baoJiAndAlarmStatistics(userId, map); + latch.countDown(); + }); + + return response; + } + + private void baoJiAndAlarmStatistics(Integer userId, Map<String, Object> map) { + List<NameValueIntDto> baoJiGroupStationDtoList = new ArrayList<>(); + //鑾峰彇绠$悊鐨勬墍鏈夌彮缁勫拰绔欑偣 + List<BaojigroupPower> baoJiGroupStationList =baoJiGroupPowerService.getListByUserId(userId); + Map<String, List<BaojigroupPower>> baoJiGroupStationMap = baoJiGroupStationList.stream().collect(Collectors.groupingBy(BaojigroupPower::getBaoJiGroupName)); + baoJiGroupStationMap.forEach((baoJiGroupName, stationList) -> { + NameValueIntDto baoJiGroupStationDto = new NameValueIntDto(); + baoJiGroupStationDto.setName(baoJiGroupName); + baoJiGroupStationDto.setValue(stationList.size()); + baoJiGroupStationDtoList.add(baoJiGroupStationDto); + }); + map.put("baoJiStationStatistics", baoJiGroupStationDtoList); + + + List<NameValueIntDto> alarmStatisticsList = new ArrayList<>(); + long powerAlarmCount = powerAlarmService.getListByUserId(userId, 1).stream().count(); + long devAlarmCount = devAlarmDataService.getListByUserId(userId, 1).stream().count(); + long battAlarmCount = battAlarmDataService.getListByUserId(userId, 1).stream().count(); + NameValueIntDto powerAlarmDto = new NameValueIntDto("鐢垫簮鐩戞祴", (int) powerAlarmCount); + alarmStatisticsList.add(powerAlarmDto); + NameValueIntDto devAlarmDto = new NameValueIntDto("璁惧鐩戞祴", (int) devAlarmCount); + alarmStatisticsList.add(devAlarmDto); + NameValueIntDto battAlarmDto = new NameValueIntDto("鐢垫睜鐩戞祴", (int) battAlarmCount); + alarmStatisticsList.add(battAlarmDto); + map.put("alarmStatistics", alarmStatisticsList); + + + } + + private void deviceStatusStatistics(Integer userId, Map<String, Object> map) { + List<DeviceState> deviceStateList =deviceStateService.getListByUserId(userId); + long chargeCount = deviceStateList.stream().filter(deviceState -> deviceState.getDevWorkstate() == 0).count(); + long hrChargeCount = deviceStateList.stream().filter(deviceState -> deviceState.getDevWorkstate() == 1).count(); + long hrDischargeCount = deviceStateList.stream().filter(deviceState -> deviceState.getDevWorkstate() == 2).count(); + long powerOffDischargeCount = deviceStateList.stream().filter(deviceState -> deviceState.getDevWorkstate() == 3).count(); + long resTestCount = deviceStateList.stream().filter(deviceState -> deviceState.getDevWorkstate() == 4).count(); + + List<NameValueIntDto> nameValueList = new ArrayList<>(); + + NameValueIntDto chargeCountDto = new NameValueIntDto("鐩磋繛鍏呯數", (int) chargeCount); + nameValueList.add(chargeCountDto); + NameValueIntDto hrChargeCountDto = new NameValueIntDto("鏍稿鍏呯數", (int) hrChargeCount); + nameValueList.add(hrChargeCountDto); + NameValueIntDto hrDischargeCountDto = new NameValueIntDto("鏍稿鏀剧數", (int) hrDischargeCount); + nameValueList.add(hrDischargeCountDto); + NameValueIntDto powerOffDischargeCountDto = new NameValueIntDto("鍋滅數鏀剧數", (int) powerOffDischargeCount); + nameValueList.add(powerOffDischargeCountDto); + NameValueIntDto resTestCountDto = new NameValueIntDto("鍐呴樆娴嬭瘯", (int) resTestCount); + nameValueList.add(resTestCountDto); + + map.put("deviceStatusStatistics", nameValueList); + + } + + private void battMonAlarmStatistics(Integer userId, Map<String, Object> map) { + List<NameValueIntDto> nameValueList = new ArrayList<>(); + + List<BattalarmData> battAlarmDataList = battAlarmDataService.getMonAlarm(userId); + //鑾峰彇鐢靛帇寮傚父鍛婅 + List<BattalarmData> monVolAlarmList = battAlarmDataList.stream() + .filter(alarm -> alarm.getAlmId().intValue() == BattAlarmIdEnum.ALARM_119005.getStateId()).collect(Collectors.toList()); + Map<String, List<BattalarmData>> monVolAlarmMap = monVolAlarmList.stream().collect( + Collectors.groupingBy(alarm -> alarm.getBattgroupId() + "_" + alarm.getMonNum())); + nameValueList.add(new NameValueIntDto("鐢靛帇", monVolAlarmMap.size())); + + //鑾峰彇鍐呴樆寮傚父鍛婅 + List<BattalarmData> monResAlarmList = battAlarmDataList.stream() + .filter(alarm -> alarm.getAlmId().intValue() == BattAlarmIdEnum.ALARM_119007.getStateId()).collect(Collectors.toList()); + Map<String, List<BattalarmData>> monResAlarmMap = monResAlarmList.stream().collect( + Collectors.groupingBy(alarm -> alarm.getBattgroupId() + "_" + alarm.getMonNum())); + nameValueList.add(new NameValueIntDto("鍐呴樆", monResAlarmMap.size())); + + + //鑾峰彇娓╁害寮傚父鍛婅 + List<BattalarmData> monTmpAlarmList = battAlarmDataList.stream() + .filter(alarm -> alarm.getAlmId().intValue() == BattAlarmIdEnum.ALARM_119006.getStateId()).collect(Collectors.toList()); + Map<String, List<BattalarmData>> monTmpAlarmMap = monTmpAlarmList.stream().collect( + Collectors.groupingBy(alarm -> alarm.getBattgroupId() + "_" + alarm.getMonNum())); + nameValueList.add(new NameValueIntDto("娓╁害", monTmpAlarmMap.size())); + + map.put("battMonAlarmStatistics", nameValueList); + } + + private void assetsInfoStatistics(Integer userId, Map<String, Object> map) { + List<NameValueIntDto> nameValueList = new ArrayList<>(); + List<StationInf> stationInfList =stationInfService.getListByUserId(userId); + int stationCount = stationInfList.size(); + NameValueIntDto stationCountDto = new NameValueIntDto(); + stationCountDto.setName("绔欑偣鏁伴噺"); + stationCountDto.setValue(stationCount); + + int powerCount = powerInfService.getListByUserId(userId).size(); + NameValueIntDto powerCountDto = new NameValueIntDto(); + powerCountDto.setName("鐢垫簮鏁伴噺"); + powerCountDto.setValue(powerCount); + + List<BattInf> battInfList = battInfService.getListByUserId(userId); + int battCount = battInfList.size(); + Map<Integer, List<BattInf>> devIdMap = battInfList.stream().collect(Collectors.groupingBy(BattInf::getDevId)); + NameValueIntDto devCountDto = new NameValueIntDto(); + devCountDto.setName("璁惧鏁伴噺"); + devCountDto.setValue(devIdMap.size()); + + NameValueIntDto battCountDto = new NameValueIntDto(); + battCountDto.setName("鐢垫睜鏁伴噺"); + battCountDto.setValue(battCount); + + nameValueList.add(stationCountDto); + nameValueList.add(powerCountDto); + nameValueList.add(devCountDto); + nameValueList.add(battCountDto); + map.put("assetsInfoStatistics", nameValueList); + + } +} -- Gitblit v1.9.1