|
@@ -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;
|
|
@@ -212,7 +213,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 +221,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())) {
|
|
|
+ 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 +388,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 +618,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;
|
|
|
+ }
|
|
|
}
|