123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- package com.huaxu.controller;
- import com.huaxu.dto.*;
- import com.huaxu.dto.generalView.WaterSupplyChart;
- import com.huaxu.entity.MonitorDataEntity;
- import com.huaxu.entity.MonitorDataValueEntity;
- import com.huaxu.entity.SceneEntity;
- import com.huaxu.model.AjaxMessage;
- import com.huaxu.model.ResultStatus;
- import com.huaxu.service.*;
- import com.huaxu.util.ByteArrayUtils;
- import com.huaxu.util.OrgInfoUtil;
- import com.huaxu.util.RedisUtil;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import java.time.LocalDateTime;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @RestController
- @RequestMapping("/comDisplay")
- @Api(tags = "综合展示")
- public class ComDisplayController {
- @Autowired
- private MonitorDataReportService monitorDataReportService;
- @Autowired
- private RedisUtil redisUtil;
- @Autowired
- private DeviceService deviceService;
- @Autowired
- private SceneService sceneService;
- @Autowired
- private MonitorInfoService monitorInfoService;
- @Autowired
- private OnlineMonitorService onlineMonitorService;
- @Autowired
- private ComdisplayMapLocationService comdisplayMapLocationService;
- @Autowired
- private OrgInfoUtil orgInfoUtil;
- @RequestMapping(value = "waterSupplyCharts", method = RequestMethod.GET)
- @ApiOperation(value = "制水电耗对比曲线图")
- public AjaxMessage<List<WaterSupplyChart>> waterSupplyCharts(@RequestParam(required = false) Integer companyOrgId) {
- return new AjaxMessage<>(ResultStatus.OK, monitorDataReportService.waterSupplyChartsByMonth("水厂", companyOrgId));
- }
- @RequestMapping(value = "yieldPowerUsage", method = RequestMethod.GET)
- @ApiOperation(value = "吨水电耗")
- public AjaxMessage<ComUsageDto> yieldPowerUsage(@RequestParam(required = false) Long companyOrgId) {
- ComUsageDto sceneUsageDto = new ComUsageDto();
- //查询公司下的场景
- SceneEntity sceneEntity = new SceneEntity();
- sceneEntity.setSceneTypeName("水厂");
- List<SceneEntity> sceneEntities = sceneService.selectByTypeNameForCom(sceneEntity,companyOrgId);
- for (SceneEntity itemScene : sceneEntities) {
- //查询场景下的所有设备信息
- List<DeviceDto> devices = new ArrayList<>();
- DeviceDto deviceDto = new DeviceDto();
- deviceDto.setSceneIds(sceneService.findByParentIdsLike(itemScene.getId()));
- if (deviceDto.getSceneIds().size() == 0)
- continue;
- 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(itemScene.getId());
- 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();
- //筛选该设备相同属性的值
- 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 "5":
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? (double) Math.round((sceneUsageDto.getPowerUsage() + attributeDiffValue) * 1000) / 1000 : (double) Math.round((attributeDiffValue) * 1000) / 1000);
- break;
- }
- }
- if (sceneUsageDto.getYieldWaterUsage() == null)
- sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage());
- if (sceneUsageDto.getPowerUsage() == null)
- sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage());
- }
- }
- }
- if (sceneUsageDto.getPowerUsage() != null && sceneUsageDto.getYieldWaterUsage() != null && sceneUsageDto.getPowerUsage() != 0) {
- sceneUsageDto.setYieldPowerUsage((double) Math.round((sceneUsageDto.getYieldWaterUsage() / sceneUsageDto.getPowerUsage()) * 100) / 100);
- } else {
- sceneUsageDto.setYieldPowerUsage(0d);
- }
- return new AjaxMessage<>(ResultStatus.OK, sceneUsageDto);
- }
- @RequestMapping(value="selectMapForCompany" , method = RequestMethod.GET)
- @ApiOperation(value = "二供供水排行--分公司")
- public AjaxMessage<List<MonitorDataCollectDto>> selectMapForCompany(@RequestParam(required = true) Integer companyOrgId) {
- MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
- monitorDataCollectDto.setSceneTypeName("泵站");
- monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
- List<MonitorDataCollectDto> result = onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- @RequestMapping(value="selectMapForWholeCompany" , method = RequestMethod.GET)
- @ApiOperation(value = "二供供水排行--总公司")
- public AjaxMessage<List<SecDataCollectDto>> selectMapForWholeCompany() {
- MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
- monitorDataCollectDto.setSceneTypeName("泵站");
- monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(null));
- List<SecDataCollectDto> result = onlineMonitorService.selectMapForWholeCompany(monitorDataCollectDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- @RequestMapping(value="selectMapDataForCompany" , method = RequestMethod.GET)
- @ApiOperation(value = "地图详细信息展示")
- public AjaxMessage<List<ComdisplayInfoDto>> selectMapDataForCompany() {
- List<ComdisplayInfoDto> receFee = comdisplayMapLocationService.selectMapDataForCompany();
- for (ComdisplayInfoDto item : receFee) {
- item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId()));
- Double waterUsage = item.getWaterUsage() != null ? item.getWaterUsage() : 0d;//售水量
- //查询子公司的取水量、制水量 产销差(制水量-售水量)/制水量 X 100%
- ComdisplayInfoDto comdisplayInfoDto= comdisplayMapLocationService.selectMapDataForCompany(Long.valueOf(item.getCompanyOrgId()));
- if(comdisplayInfoDto!=null)
- {
- item.setIntakeWaterUsage(comdisplayInfoDto.getIntakeWaterUsage());
- item.setYieldWaterUsage(comdisplayInfoDto.getYieldWaterUsage());
- if(comdisplayInfoDto.getYieldWaterUsage()!=null&&comdisplayInfoDto.getYieldWaterUsage()>0d)
- {
- item.setWaterFeeRecoveryRate(Double.valueOf(Math.round(((comdisplayInfoDto.getYieldWaterUsage()-waterUsage)/comdisplayInfoDto.getYieldWaterUsage())*100)));
- }
- }
- }
- return new AjaxMessage<>(ResultStatus.OK, receFee);
- }
- @RequestMapping(value="selectPipeNetLayer" , method = RequestMethod.GET)
- @ApiOperation(value = "查询管网地图图层及设备")
- public AjaxMessage<List<PipeNetLayerDto>> selectPipeNetLayer(
- @ApiParam(value = "公司机构id", required = true)@RequestParam Integer companyOrgId){
- OnlineDataDto onlineDataDto=new OnlineDataDto();
- onlineDataDto.setFlag(1);
- onlineDataDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
- List<PipeNetLayerDto> result=onlineMonitorService.selectPipeNetLayer(onlineDataDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- @RequestMapping(value="selectDeviceMapParam" , method = RequestMethod.GET)
- @ApiOperation(value = "查询设备地图参数数据")
- public AjaxMessage<List<MonitorDataCollectDto>> selectDeviceMapParam(
- @ApiParam(value = "一级场景id", required = true) @RequestParam Long deviceId){
- MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
- monitorDataCollectDto.setDeviceId(deviceId);
- monitorDataCollectDto.setFlag(1);
- monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
- List<MonitorDataCollectDto> result=onlineMonitorService.selectDeviceMapParam(monitorDataCollectDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- @RequestMapping(value="selectMapSuspension" , method = RequestMethod.GET)
- @ApiOperation(value = "查询地图悬浮数据")
- public AjaxMessage<List<MonitorDataCollectDto>> selectMapSuspension(
- @ApiParam(value = "公司机构id", required = true)@RequestParam Integer companyOrgId){
- MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
- monitorDataCollectDto.setFlag(1);
- monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
- List<MonitorDataCollectDto> result=onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- @RequestMapping(value="selectMapParam" , method = RequestMethod.GET)
- @ApiOperation(value = "查询地图参数数据")
- public AjaxMessage<List<MonitorDataCollectDto>> selectMapParam(
- @ApiParam(value = "一级场景id", required = true) @RequestParam Long sceneId){
- MonitorDataCollectDto monitorDataCollectDto=new MonitorDataCollectDto();
- monitorDataCollectDto.setSceneId(sceneId);
- monitorDataCollectDto.setFlag(1);
- monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsLike(null));
- List<MonitorDataCollectDto> result=onlineMonitorService.selectMapParam(monitorDataCollectDto);
- return new AjaxMessage<>(ResultStatus.OK, result);
- }
- }
|