|
@@ -51,6 +51,8 @@ public class MonitorInfoController {
|
|
|
private AlarmDetailsService alarmDetailsService;
|
|
|
@Autowired
|
|
|
private DeviceAttributeSpecsService deviceAttributeSpecsService;
|
|
|
+ @Autowired
|
|
|
+ private MonitorDataReportService monitorDataReportService;
|
|
|
|
|
|
@ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
|
|
|
@RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
|
|
@@ -58,80 +60,20 @@ public class MonitorInfoController {
|
|
|
public AjaxMessage<SceneUsageDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id,@ApiParam(value = "类型(0综合调度 1综合展示)", required = false) @RequestParam(required = false) Integer... type) {
|
|
|
SceneUsageDto sceneUsageDto = new SceneUsageDto();
|
|
|
//查询场景下的所有设备信息
|
|
|
- List<DeviceDto> devices = new ArrayList<>();
|
|
|
- DeviceDto deviceDto = new DeviceDto();
|
|
|
- deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
|
|
|
- if(deviceDto.getSceneIds().size()==0)
|
|
|
- return null;
|
|
|
- devices.addAll(deviceService.selectList(deviceDto));
|
|
|
- //取前一个小时的时间
|
|
|
- LocalDateTime dateTime = LocalDateTime.now().plusDays(-1);
|
|
|
- for (DeviceDto item : devices) {
|
|
|
- //设备的几个参数值
|
|
|
- SceneDeviceAttributeDto sceneDeviceAttributeDto = new SceneDeviceAttributeDto();
|
|
|
- sceneDeviceAttributeDto.setDeviceId(item.getId());
|
|
|
- sceneDeviceAttributeDto.setYear(dateTime.getYear());
|
|
|
- sceneDeviceAttributeDto.setMonth(dateTime.getMonthValue());
|
|
|
- sceneDeviceAttributeDto.setDay(dateTime.getDayOfMonth());
|
|
|
- sceneDeviceAttributeDto.setSceneId(id);
|
|
|
- List<SceneDeviceAttributeDto> sceneDeviceAttributeDtos = monitorInfoService.findAttributeList(sceneDeviceAttributeDto);
|
|
|
- //取缓存里的数据
|
|
|
- byte[] bytes = redisUtil.get(("sms_water_" + item.getDeviceCode()).getBytes());
|
|
|
- if (bytes != null && bytes.length > 0) {
|
|
|
- MonitorDataEntity monitorDataEntity = (MonitorDataEntity) ByteArrayUtils.bytesToObject(bytes).get();
|
|
|
- sceneUsageDto.setCollectDate(monitorDataEntity.getCollectDate());
|
|
|
- //筛选该设备相同属性的值
|
|
|
- Map<Long, MonitorDataValueEntity> map = new HashMap<>();
|
|
|
- //将缓存中的实时数据放到map中方便进行遍历
|
|
|
- for (MonitorDataValueEntity dateValue : monitorDataEntity.getDataValues()) {
|
|
|
- map.put(dateValue.getAttributeId(), dateValue);
|
|
|
- }
|
|
|
- for (SceneDeviceAttributeDto itemAttribute : sceneDeviceAttributeDtos) {
|
|
|
- Double attributeDiffValue = 0d;
|
|
|
- if (!map.containsKey(itemAttribute.getAttributeId())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() != null) {
|
|
|
- attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue() - itemAttribute.getLatestValue();
|
|
|
- } else if (map.get(itemAttribute.getAttributeId()).getDataValue() != null && itemAttribute.getLatestValue() == null) {
|
|
|
- attributeDiffValue = map.get(itemAttribute.getAttributeId()).getDataValue();
|
|
|
- }
|
|
|
- switch (itemAttribute.getAttributeType()) {
|
|
|
- case "3":
|
|
|
- sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? (double) Math.round((sceneUsageDto.getYieldWaterUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
|
|
|
- break;
|
|
|
- case "4":
|
|
|
- sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? (double) Math.round((sceneUsageDto.getIntakeWaterUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
|
|
|
- break;
|
|
|
- case "5":
|
|
|
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? (double) Math.round((sceneUsageDto.getPowerUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
|
|
|
- break;
|
|
|
- case "6":
|
|
|
- sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? (double) Math.round((sceneUsageDto.getDrugUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (sceneUsageDto.getYieldWaterUsage() == null)
|
|
|
- sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage());
|
|
|
- if (sceneUsageDto.getIntakeWaterUsage() == null)
|
|
|
- sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage());
|
|
|
- if (sceneUsageDto.getPowerUsage() == null)
|
|
|
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage());
|
|
|
- if (sceneUsageDto.getDrugUsage() == null)
|
|
|
- sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage());
|
|
|
-
|
|
|
- if (type != null && type.length > 0) {
|
|
|
- sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- }else {
|
|
|
- sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
- }
|
|
|
- }
|
|
|
+ sceneUsageDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,3,1).doubleValue());
|
|
|
+ sceneUsageDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,4,1).doubleValue());
|
|
|
+ sceneUsageDto.setPowerUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,5,1).doubleValue());
|
|
|
+ sceneUsageDto.setDrugUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,6,1).doubleValue());
|
|
|
+ if (type != null && type.length > 0) {
|
|
|
+ sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ }else {
|
|
|
+ sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
+ sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
|
|
|
}
|
|
|
return new AjaxMessage<>(ResultStatus.OK,sceneUsageDto);
|
|
|
}
|