|
@@ -1,6 +1,7 @@
|
|
|
package com.huaxu.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.huaxu.common.StringUtils;
|
|
|
import com.huaxu.dao.OnlineMonitorMapper;
|
|
|
import com.huaxu.dto.*;
|
|
|
import com.huaxu.entity.MonitorDataEntity;
|
|
@@ -81,24 +82,27 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
|
|
|
monitorDataCollectDto.setType(3);
|
|
|
List<MonitorDataCollectDto> result=onlineMonitorMapper.selectMapSuspension(monitorDataCollectDto);
|
|
|
- monitorDataCollectDto.setType(1);
|
|
|
- List<MonitorDataCollectDto> calculateRes=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
|
|
|
+ if(!StringUtils.isEmpty(monitorDataCollectDto.getSceneTypeName()))
|
|
|
+ {
|
|
|
+ monitorDataCollectDto.setType(1);
|
|
|
+ List<MonitorDataCollectDto> calculateRes=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
|
|
|
|
|
|
- GetCalMonitorData(result,calculateRes);
|
|
|
- //按水量倒序排序 如果是水源按照取水量排序,其他按照供水量
|
|
|
- result.sort(new Comparator<MonitorDataCollectDto>() {
|
|
|
- @Override
|
|
|
- public int compare(MonitorDataCollectDto o1, MonitorDataCollectDto o2) {
|
|
|
- Double d1= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o1.getIntakeWaterUsage()==null?0d:o1.getIntakeWaterUsage()):(o1.getYieldWaterUsage()==null?0d:o1.getYieldWaterUsage());
|
|
|
- Double d2= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o2.getIntakeWaterUsage()==null?0d:o2.getIntakeWaterUsage()):(o2.getYieldWaterUsage()==null?0d:o2.getYieldWaterUsage());
|
|
|
- if(d1>d2){
|
|
|
- return -1;
|
|
|
- }else if(d1.equals(d1)) {
|
|
|
+ GetCalMonitorData(result,calculateRes);
|
|
|
+ //按水量倒序排序 如果是水源按照取水量排序,其他按照供水量
|
|
|
+ result.sort(new Comparator<MonitorDataCollectDto>() {
|
|
|
+ @Override
|
|
|
+ public int compare(MonitorDataCollectDto o1, MonitorDataCollectDto o2) {
|
|
|
+ Double d1= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o1.getIntakeWaterUsage()==null?0d:o1.getIntakeWaterUsage()):(o1.getYieldWaterUsage()==null?0d:o1.getYieldWaterUsage());
|
|
|
+ Double d2= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o2.getIntakeWaterUsage()==null?0d:o2.getIntakeWaterUsage()):(o2.getYieldWaterUsage()==null?0d:o2.getYieldWaterUsage());
|
|
|
+ if(d1>d2){
|
|
|
+ return -1;
|
|
|
+ }else if(d1.equals(d1)) {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
return 0;
|
|
|
}
|
|
|
- return 0;
|
|
|
- }
|
|
|
- });
|
|
|
+ });
|
|
|
+ }
|
|
|
return result;
|
|
|
}
|
|
|
/**
|
|
@@ -212,7 +216,7 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public DeviceCountStatsDto statsDeviceQualified(OnlineDataDto onlineDataDto)
|
|
|
+ public List<DeviceCountStatsDto> statsDeviceQualified(OnlineDataDto onlineDataDto)
|
|
|
{
|
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
onlineDataDto.setTenantId(loginUser.getTenantId());
|
|
@@ -220,12 +224,14 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
onlineDataDto.setUserType(loginUser.getType());
|
|
|
//1是公司,2是公司及以下,3部门,4部门及以下,5自定义
|
|
|
onlineDataDto.setPermissonType(loginUser.getPermissonType());
|
|
|
- DeviceCountStatsDto result=onlineMonitorMapper.statsDeviceQualified(onlineDataDto);
|
|
|
- List<DeviceCountStatsDto> parmResult=onlineMonitorMapper.statsParmQualified(onlineDataDto);
|
|
|
- result.setParmQualified(parmResult);
|
|
|
- for(DeviceCountStatsDto parm : result.getParmQualified()){
|
|
|
- parm.setTotalCount(result.getTotalCount());
|
|
|
- parm.setNormalCount(result.getTotalCount()-parm.getAlarmCount());
|
|
|
+ List<DeviceCountStatsDto> result=onlineMonitorMapper.statsDeviceQualified(onlineDataDto);
|
|
|
+ if(!StringUtils.isEmpty(onlineDataDto.getSceneTypeName())&&result.size()>0) {
|
|
|
+ List<DeviceCountStatsDto> parmResult=onlineMonitorMapper.statsParmQualified(onlineDataDto);
|
|
|
+ result.get(0).setParmQualified(parmResult);
|
|
|
+ for(DeviceCountStatsDto parm : result.get(0).getParmQualified()){
|
|
|
+ parm.setTotalCount(result.get(0).getTotalCount());
|
|
|
+ parm.setNormalCount(result.get(0).getTotalCount()-parm.getAlarmCount());
|
|
|
+ }
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
@@ -385,6 +391,50 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
onlineDataDto.setPermissonType(loginUser.getPermissonType());
|
|
|
return onlineMonitorMapper.selectPipeNetLayer(onlineDataDto);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 统计从水源地到水龙头汇总数据
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public DispatchSummaryDto statsDispatchSummary(MonitorDataCollectDto monitorDataCollectDto)
|
|
|
+ {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ monitorDataCollectDto.setTenantId(loginUser.getTenantId());
|
|
|
+ monitorDataCollectDto.setProgramItems(loginUser.getProgramItemList());
|
|
|
+ monitorDataCollectDto.setUserType(loginUser.getType());
|
|
|
+ //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
|
|
|
+ monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
|
|
|
+ monitorDataCollectDto.setType(1);
|
|
|
+ DispatchSummaryDto result=new DispatchSummaryDto();
|
|
|
+
|
|
|
+ monitorDataCollectDto.setSceneTypeName("水源");
|
|
|
+ List<MonitorDataCollectDto> waterHead=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
|
|
|
+ MonitorDataCollectDto waterHeadRes=GetCalTotalData(waterHead);
|
|
|
+ result.setIntakeWaterUsage(waterHeadRes.getIntakeWaterUsage());
|
|
|
+
|
|
|
+ monitorDataCollectDto.setSceneTypeName("水厂");
|
|
|
+ List<MonitorDataCollectDto> waterWorks=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
|
|
|
+ MonitorDataCollectDto waterWorksRes=GetCalTotalData(waterWorks);
|
|
|
+ result.setYieldWaterUsage(waterWorksRes.getYieldWaterUsage());
|
|
|
+ result.setPowerUsage(waterWorksRes.getPowerUsage());
|
|
|
+
|
|
|
+ Double invName=onlineMonitorMapper.selectTotalYieldWater(monitorDataCollectDto);
|
|
|
+ result.setInvNameRate(invName!=null&&waterWorksRes.getYieldWaterUsage()!=null?waterWorksRes.getYieldWaterUsage()/invName:null);
|
|
|
+
|
|
|
+ OnlineDataDto onlineDataDto=new OnlineDataDto();
|
|
|
+ onlineDataDto.setSceneTypeName("压力");
|
|
|
+ onlineDataDto.setSceneIds(monitorDataCollectDto.getSceneIds());
|
|
|
+ List<DeviceCountStatsDto> pres=statsDeviceQualified(onlineDataDto);
|
|
|
+ result.setPresQualifiedRate(pres.size()>0&&pres.get(0).getTotalCount()!=0&&pres.get(0).getParmQualified().size()>0?
|
|
|
+ (double)pres.get(0).getParmQualified().get(0).getNormalCount()/pres.get(0).getTotalCount()*100:null);
|
|
|
+
|
|
|
+ onlineDataDto.setSceneTypeName("水质");
|
|
|
+ List<DeviceCountStatsDto> water=statsDeviceQualified(onlineDataDto);
|
|
|
+ result.setWaterQualifiedRate(water.size()>0&&water.get(0).getTotalCount()!=0?(double)water.get(0).getNormalCount()/water.get(0).getTotalCount()*100:null);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
/**
|
|
|
* 获取在线数据及计算数据
|
|
|
*/
|
|
@@ -571,4 +621,47 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 获取计算数据总值
|
|
|
+ */
|
|
|
+ public MonitorDataCollectDto GetCalTotalData(List<MonitorDataCollectDto> calculateRes){
|
|
|
+ MonitorDataCollectDto result=new MonitorDataCollectDto();
|
|
|
+ for(MonitorDataCollectDto calculate :calculateRes){
|
|
|
+ for(MonitorDataDto monitorData : calculate.getMonitorDataEntities()){
|
|
|
+ byte[] bytes = redisUtil.get(("sms_water_"+monitorData.getDeviceCode()).getBytes());
|
|
|
+ if(bytes != null && bytes.length>0) {
|
|
|
+ MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
|
|
|
+ //筛选该设备相同属性的值
|
|
|
+ List<MonitorDataValueEntity> attributeEntities = monitorDataEntity.getDataValues().stream().filter((MonitorDataValueEntity m)
|
|
|
+ -> m.getAttributeId().equals(monitorData.getAttributeId())).collect(Collectors.toList());
|
|
|
+ MonitorDataValueEntity attributeEntity=attributeEntities.size()>0?attributeEntities.get(0):null;
|
|
|
+ if (attributeEntity != null) {
|
|
|
+ SimpleDateFormat formatdate = new SimpleDateFormat("YYYY-MM-dd");//日期算换格式
|
|
|
+ //计算今日数据
|
|
|
+ if(formatdate.format(new Date()).equals(formatdate.format(monitorDataEntity.getCollectDate()))) {
|
|
|
+ Double attributeValue =0d;
|
|
|
+ if(attributeEntity.getDataValue() != null && monitorData.getLatestValue() != null){
|
|
|
+ attributeValue=attributeEntity.getDataValue() - monitorData.getLatestValue();
|
|
|
+ }
|
|
|
+ switch (monitorData.getAttributeType()) {
|
|
|
+ case "3"://供水量or出水量
|
|
|
+ result.setYieldWaterUsage(result.getYieldWaterUsage() != null ? result.getYieldWaterUsage() + attributeValue : attributeValue);
|
|
|
+ break;
|
|
|
+ case "4"://取水量or进水量
|
|
|
+ result.setIntakeWaterUsage(result.getIntakeWaterUsage() != null ? result.getIntakeWaterUsage() + attributeValue : attributeValue);
|
|
|
+ break;
|
|
|
+ case "5"://耗电量
|
|
|
+ result.setPowerUsage(result.getPowerUsage() != null ? result.getPowerUsage() + attributeValue : attributeValue);
|
|
|
+ break;
|
|
|
+ case "6"://耗药量
|
|
|
+ result.setDrugUsage(result.getDrugUsage() != null ? result.getDrugUsage() + attributeValue : attributeValue);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|