소스 검색

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

wangbo 4 년 전
부모
커밋
768c68a493

+ 10 - 0
sms_water/src/main/java/com/huaxu/controller/MonitorDataReportController.java

@@ -1,6 +1,7 @@
 package com.huaxu.controller;
 
 import com.huaxu.dto.MonitorDataChartReportDeviceDto;
+import com.huaxu.dto.MonitorDataChartReportValueDto;
 import com.huaxu.dto.generalView.*;
 import com.huaxu.entity.DeviceEntity;
 import com.huaxu.model.AjaxMessage;
@@ -16,6 +17,8 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @description
@@ -68,9 +71,16 @@ public class MonitorDataReportController {
             List<MonitorDataChartReportDeviceDto> energy = monitorDataReportService.monitorDataEnergyReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),sceneType);
             //水质(PH8、余氯11、浊度10)
             List<MonitorDataChartReportDeviceDto> quality = monitorDataReportService.monitorDataQualityReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
+            // 水电耗
+            List<MonitorDataChartReportDeviceDto> consumption = monitorDataReportService.monitorWaterPowerConsumptionReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth(),1);
             //报警(报警次数)
             List<MonitorDataChartReportDeviceDto> alarm = monitorDataReportService.deviceAlarmReport(reportType,sceneIds,localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth());
 
+            Map<String,MonitorDataChartReportDeviceDto> map = consumption.stream().collect(Collectors.toMap(MonitorDataChartReportDeviceDto::getDeviceName, a -> a,(k1, k2)->k1));
+            for (MonitorDataChartReportDeviceDto energyDto: energy) {
+                MonitorDataChartReportDeviceDto reportDeviceDto =  map.get(energyDto.getDeviceName());
+                energyDto.getAttributeData().addAll(reportDeviceDto.getAttributeData());
+            }
             reportList.add(energy);
             reportList.add(quality);
             reportList.add(alarm);

+ 2 - 0
sms_water/src/main/java/com/huaxu/service/AbstractReportService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.huaxu.common.StringUtils;
 import com.huaxu.dto.*;
+import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
@@ -133,6 +134,7 @@ public abstract class AbstractReportService<M extends BaseMapper<T>, T> extends
             reportDto.setDeviceIds(devices);
             reportDto.setParentSceneIds(queryDto.getIds());
         }
+        reportDto.setUserId(UserUtil.getCurrentUser().getId());
         return reportDto;
     }
 

+ 7 - 0
sms_water/src/main/java/com/huaxu/service/AppDataService.java

@@ -181,6 +181,13 @@ public class AppDataService {
                         sceneDataDto.setIsAlarm(0);
                     sceneDataDtos.add(sceneDataDto);
                 }
+            }else
+            {
+                for (DeviceParmEntity item : parmMap.get(deveiceCode)) {
+                    SceneDataDto sceneDataDto = new SceneDataDto();
+                    sceneDataDto.setMonitorName(item.getAttributeName());
+                    sceneDataDtos.add(sceneDataDto);
+                }
             }
         }
         returnInfo.setInfos(sceneDataDtos);

+ 2 - 1
sms_water/src/main/java/com/huaxu/service/MonitorDataReportService.java

@@ -35,7 +35,8 @@ public interface MonitorDataReportService {
     List<MonitorDataChartReportDeviceDto> monitorDataQualityReport(Integer type, List<Long>  sceneIds, Integer year, Integer month , Integer day);
     //能耗对比
     List<MonitorDataChartReportDeviceDto> monitorDataEnergyReport(Integer type, List<Long>  sceneIds, Integer year, Integer month , Integer day, Integer sceneType);
-
+    // 水电耗
+    List<MonitorDataChartReportDeviceDto> monitorWaterPowerConsumptionReport(Integer type, List<Long>  sceneIds, Integer year, Integer month , Integer day, Integer sceneType);
     List<DeviceEntity> getDeviceBySceneTypeName(String sceneTypeName);
 
     List<MonitorDataChartReportDeviceDto> monitorDataDeviceReport(Integer type, List<Long>  deviceIds, Integer searchType, Integer year, Integer month , Integer day);

+ 66 - 11
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -168,6 +168,61 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         return monitorDataChartReportDeviceDtos;
     }
     @Override
+    public List<MonitorDataChartReportDeviceDto> monitorWaterPowerConsumptionReport(Integer type, List<Long> sceneIds, Integer year, Integer month , Integer day, Integer sceneType) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        List<MonitorDataChartReportDeviceDto> monitorDataChartReportDeviceDtos = null;
+        if (type != null && type == 3){
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByDay(sceneType,sceneIds,year,month,day,
+                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        } else if(type != null && type == 2){
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByMonth(sceneType,sceneIds,year,month,
+                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        } else if(type != null && type == 1){
+            monitorDataChartReportDeviceDtos = monitorDataReportMapper.MonitorDataEnergyReportByYear(sceneType,sceneIds,year,
+                    loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        }
+        if (monitorDataChartReportDeviceDtos != null) {
+            FillLoseData(monitorDataChartReportDeviceDtos,type,year,month,day);
+        }
+        for (MonitorDataChartReportDeviceDto water: monitorDataChartReportDeviceDtos) {
+            List<MonitorDataChartReportAttributeDto> newAttrDataList  = new ArrayList();
+            MonitorDataChartReportAttributeDto newAttrData = new MonitorDataChartReportAttributeDto();
+            List<MonitorDataChartReportAttributeDto> attributeDtos =  water.getAttributeData();
+            newAttrData.setAttributeName("水电耗");
+            newAttrData.setUnit("kwh/㎡");
+            if (attributeDtos.size()  == 2) {
+                MonitorDataChartReportAttributeDto attributeDto1 = attributeDtos.get(0);
+                MonitorDataChartReportAttributeDto attributeDto2 = attributeDtos.get(1);
+                Map<Integer,MonitorDataChartReportValueDto> map1 = attributeDto1.getMonitorDataChartReportValue().stream().collect(Collectors.toMap(MonitorDataChartReportValueDto::getDateLabel, a -> a,(k1, k2)->k1));
+                Map<Integer,MonitorDataChartReportValueDto> map2 = attributeDto2.getMonitorDataChartReportValue().stream().collect(Collectors.toMap(MonitorDataChartReportValueDto::getDateLabel, a -> a,(k1, k2)->k1));
+                // 耗电量
+                if ("5".equals(attributeDto1.getAttributeType())) {
+                    calculation(attributeDto1, map2);
+                    newAttrData.setMonitorDataChartReportValue(attributeDto1.getMonitorDataChartReportValue());
+                } else {
+                    calculation(attributeDto2, map1);
+                    newAttrData.setMonitorDataChartReportValue(attributeDto2.getMonitorDataChartReportValue());
+                }
+            }
+            newAttrDataList.add(newAttrData);
+            water.setAttributeData(newAttrDataList);
+        }
+        return monitorDataChartReportDeviceDtos;
+    }
+
+    private void calculation(MonitorDataChartReportAttributeDto attributeDto, Map<Integer,MonitorDataChartReportValueDto> map){
+        for (MonitorDataChartReportValueDto valueDto : attributeDto.getMonitorDataChartReportValue()) {
+            BigDecimal b1 = new BigDecimal(valueDto.getData());
+            BigDecimal b2 = new BigDecimal(map.get(valueDto.getDateLabel()).getData());
+            valueDto.setMonitorData("");
+            if (b1.compareTo(new BigDecimal(0)) == 0 || b2.compareTo(new BigDecimal(0)) == 0) {
+                valueDto.setData(0d);
+            } else {
+                valueDto.setData(b1.divide(b2, 5, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).doubleValue());
+            }
+        }
+    }
+    @Override
     public List<DeviceEntity> getDeviceBySceneTypeName(String sceneTypeName){
         LoginUser loginUser = UserUtil.getCurrentUser();
         return monitorDataReportMapper.getDeviceBySceneTypeName(sceneTypeName,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
@@ -980,11 +1035,11 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                     value.stream().forEach(waterSupplyData -> {
                         Period period = Period.between(LocalDate.of(waterSupplyData.getYear(), waterSupplyData.getMonth(), waterSupplyData.getDay()), LocalDate.now());
                         waterSupplyChart.setSort(period.getDays());
-                        if (waterSupplyData.getParmType() == 3) { //供水
-                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
-                        } else if (waterSupplyData.getParmType() == 5) {//电耗
-                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
-                        } else if (waterSupplyData.getParmType() == 6) {//药耗
+                        if (waterSupplyData.getParmType() == 3 && waterSupplyData.getAmount() != null) { //供水
+                            waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP));
+                        } else if (waterSupplyData.getParmType() == 5 && waterSupplyData.getAmount() != null) {//电耗
+                            waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP));
+                        } else if (waterSupplyData.getParmType() == 6 && waterSupplyData.getAmount() != null) {//药耗
                             waterSupplyChart.setDrugData(waterSupplyData.getAmount());
                         }
                     });
@@ -994,13 +1049,13 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
         waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
         waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
         //获取当日水量
-        BigDecimal waterDataAmountCountMonth = getAmountCount(null,sceneId.intValue(), sceneTypeName, 3,1 );
+        BigDecimal waterDataAmountCountMonth = getAmountCount(null, sceneId.intValue(), sceneTypeName, 3, 1);
         //获取当日电耗
-        BigDecimal powerDataAmountCountMonth = getAmountCount(null,sceneId.intValue(), sceneTypeName, 5,1 );
-        WaterSupplyChart waterSupplyChart= new WaterSupplyChart();
-        waterSupplyChart.setDate(LocalDate.now().getYear()+"-"+LocalDate.now().getMonthValue()+"-"+LocalDate.now().getDayOfMonth());
-        waterSupplyChart.setWaterData(waterDataAmountCountMonth.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
-        waterSupplyChart.setPowerData(powerDataAmountCountMonth.divide(BigDecimal.valueOf(10000),3, RoundingMode.HALF_UP));
+        BigDecimal powerDataAmountCountMonth = getAmountCount(null, sceneId.intValue(), sceneTypeName, 5, 1);
+        WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
+        waterSupplyChart.setDate(LocalDate.now().getYear() + "-" + LocalDate.now().getMonthValue() + "-" + LocalDate.now().getDayOfMonth());
+        waterSupplyChart.setWaterData(waterDataAmountCountMonth.divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP));
+        waterSupplyChart.setPowerData(powerDataAmountCountMonth.divide(BigDecimal.valueOf(10000), 3, RoundingMode.HALF_UP));
         waterSupplyChart.setSort(0);
         waterSupplyCharts.add(waterSupplyChart);
         return waterSupplyCharts;