diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsParam.java new file mode 100644 index 000000000..59180de88 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/PqsParam.java @@ -0,0 +1,19 @@ +package com.njcn.device.pq.pojo.param; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@ApiModel +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class PqsParam extends DeviceInfoParam.BusinessParam { + @ApiModelProperty("当前页码") + private Integer pageNum; + @ApiModelProperty("当前页条数") + private Integer pageSize; +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/OnlineRate.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/OnlineRate.java new file mode 100644 index 000000000..eca5c5033 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/OnlineRate.java @@ -0,0 +1,32 @@ +package com.njcn.device.pq.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.influxdb.annotation.Column; + +import java.time.LocalDateTime; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pqs_onlinerate") +public class OnlineRate extends BaseEntity { + + @Column(name="Id") + private String id; + + @Column(name="Create_Time") + private LocalDateTime createTime; + + @Column(name="Dev_Id") + private String devId; + + @Column(name="Offline_Min") + private String offlineMin; + + @Column(name="Online_Min") + private String onlineMin; + + private Double onlineRate; +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsMonthFlow.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsMonthFlow.java new file mode 100644 index 000000000..5702c826a --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/PqsMonthFlow.java @@ -0,0 +1,21 @@ +package com.njcn.device.pq.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pqs_month_flow") +public class PqsMonthFlow extends BaseEntity { + private static final long serialVersionUID = 1L; + + private String id; + + private String time; + + private String actualValue; + + private String devId; +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineFlowMealDetailVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineFlowMealDetailVO.java index af60c3422..f803a8a65 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineFlowMealDetailVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineFlowMealDetailVO.java @@ -1,5 +1,6 @@ package com.njcn.device.pq.pojo.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -18,6 +19,18 @@ public class LineFlowMealDetailVO implements Serializable { @ApiModelProperty("id") private String id; + @ApiModelProperty("监测点对应的设备id") + private String DeviceId; + + @ApiModelProperty("监测点对应的设备名称") + private String DeviceName; + + @ApiModelProperty("供电公司") + private String ElectricPowerCompany; + + @ApiModelProperty("变电站") + private String Substation; + @ApiModelProperty("pid") private String pid; @@ -37,6 +50,7 @@ public class LineFlowMealDetailVO implements Serializable { private Integer comFlag; @ApiModelProperty("最新更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty("在线率") @@ -45,6 +59,12 @@ public class LineFlowMealDetailVO implements Serializable { @ApiModelProperty("数据完整性") private Float integrity; + @ApiModelProperty("理论数据量") + private Integer due; + + @ApiModelProperty("实际数据量") + private Integer real; + @ApiModelProperty("套餐流量") private Float flowMeal; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineInfluxDbInegrityVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineInfluxDbInegrityVO.java index aa5c5bdb7..9d25db7d1 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineInfluxDbInegrityVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineInfluxDbInegrityVO.java @@ -21,4 +21,10 @@ public class LineInfluxDbInegrityVO implements Serializable { @Column(name = "integrity") private Double integrity; + @Column(name = "due") + private Integer due; + + @Column(name = "real") + private Integer real; + } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineStatisticsDetailVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineStatisticsDetailVO.java index 74f77852d..aaf2d8695 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineStatisticsDetailVO.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/LineStatisticsDetailVO.java @@ -25,6 +25,12 @@ public class LineStatisticsDetailVO implements Serializable { @ApiModelProperty("监测点总数") private Integer lineNum; + @ApiModelProperty("装置总数") + private Integer DeviceNum; + + @ApiModelProperty("装置新增总数") + private Integer addDeviceNum; + @ApiModelProperty("监测点新增数") private Integer addLineNum; diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/OperationContrController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/OperationContrController.java index dc3f0953e..ae31d2f7e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/OperationContrController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/OperationContrController.java @@ -1,5 +1,6 @@ package com.njcn.device.pq.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; @@ -7,9 +8,11 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.LogUtil; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.param.PqsParam; import com.njcn.device.pq.pojo.vo.*; import com.njcn.device.pq.service.LineService; import com.njcn.web.controller.BaseController; +import com.njcn.web.utils.RequestUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -43,8 +46,10 @@ public class OperationContrController extends BaseController { @PostMapping("/getLineDistribution") @ApiOperation("获取监测点分布") @ApiImplicitParam(name = "deviceInfoParam", value = "实体", required = true) - public HttpResult> getLineDistribution(@RequestBody @Validated DeviceInfoParam deviceInfoParam) { + public HttpResult> getLineDistribution(@RequestBody DeviceInfoParam deviceInfoParam) { String methodDescribe = getMethodDescribe("getLineDistribution"); + DeviceInfoParam param = new DeviceInfoParam(RequestUtil.getDeptIndex(),null); + deviceInfoParam.setDeptIndex(param.getDeptIndex()); LogUtil.njcnDebug(log, "{},参数集合:{}", methodDescribe, deviceInfoParam); List result = lineService.getLineDistribution(deviceInfoParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); @@ -54,7 +59,7 @@ public class OperationContrController extends BaseController { @PostMapping("/getLineStatisticsDetail") @ApiOperation("获取监测点统计") @ApiImplicitParam(name = "deviceInfoParam", value = "实体", required = true) - public HttpResult> getLineStatisticsDetail(@RequestBody @Validated DeviceInfoParam.BusinessParam deviceInfoParam) { + public HttpResult> getLineStatisticsDetail(@RequestBody DeviceInfoParam.BusinessParam deviceInfoParam) { String methodDescribe = getMethodDescribe("getLineStatisticsDetail"); LogUtil.njcnDebug(log, "{},参数集合:{}", methodDescribe, deviceInfoParam); List result = lineService.getLineStatisticsDetail(deviceInfoParam); @@ -83,6 +88,36 @@ public class OperationContrController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getDeviceRunStatistics") + @ApiOperation("获取终端运行统计") + @ApiImplicitParam(name = "deviceInfoParam", value = "实体", required = true) + public HttpResult> getDeviceRunStatistics(@RequestBody DeviceInfoParam.BusinessParam deviceInfoParam){ + String methodDescribe = getMethodDescribe("getDeviceRunStatistics"); + DeviceInfoParam param = new DeviceInfoParam(RequestUtil.getDeptIndex(),null); + deviceInfoParam.setDeptIndex(param.getDeptIndex()); + LogUtil.njcnDebug(log, "{},参数集合:{}", methodDescribe, deviceInfoParam); +// deviceInfoParam.setDeptIndex("db2ba5e64d77f8e94ea5e6bb267407a2"); + List result = lineService.getDeviceRunStatistics(deviceInfoParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getNewDeviceRunStatistics") + @ApiOperation("获取终端运行统计_新") + @ApiImplicitParam(name = "deviceInfoParam", value = "实体", required = true) + public HttpResult> getNewDeviceRunStatistics(@RequestBody PqsParam deviceInfoParam){ + String methodDescribe = getMethodDescribe("getDeviceRunStatistics"); + DeviceInfoParam param = new DeviceInfoParam(RequestUtil.getDeptIndex(),null); + deviceInfoParam.setDeptIndex(param.getDeptIndex()); + LogUtil.njcnDebug(log, "{},参数集合:{}", methodDescribe, deviceInfoParam); + Page result = lineService.getNewDeviceRunStatistics(deviceInfoParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getLineStaticsView") @ApiOperation("获取详细的监测点统计") diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java index f7dac63e0..282a2a29d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java @@ -3,6 +3,8 @@ package com.njcn.device.pq.mapper; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.device.pq.pojo.bo.BaseLineInfo; import com.njcn.device.pq.pojo.bo.DeviceType; @@ -408,4 +410,10 @@ public interface LineMapper extends BaseMapper { "" }) Integer queryOnlineSubstaion(@Param("items") List deviceIds); + + LineStateVO getDeviceStatus(List deviceIndexes); + + List getDeviceRunStatistics(@Param("list") List list, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); + + Page getNewDeviceRunStatistics(Page page,@Param("devs") List list, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTime); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/OnlineRateMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/OnlineRateMapper.java new file mode 100644 index 000000000..7d8dc5e9a --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/OnlineRateMapper.java @@ -0,0 +1,13 @@ +package com.njcn.device.pq.mapper; + +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pq.pojo.po.OnlineRate; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface OnlineRateMapper extends BaseMapper { + + List getOnlineRateByDevId(@Param("list") List devIndexs, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTimem); +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/PqsMonthFlowMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/PqsMonthFlowMapper.java new file mode 100644 index 000000000..9cc4cb5b6 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/PqsMonthFlowMapper.java @@ -0,0 +1,12 @@ +package com.njcn.device.pq.mapper; + +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.po.PqsMonthFlow; +import org.apache.ibatis.annotations.Param; + +public interface PqsMonthFlowMapper extends BaseMapper { + + float getStatisValueFlow(@Param("devId")String id, @Param("startTime") DateTime startTime, @Param("endTime") DateTime endTimem); +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index b9c022deb..97ddce45a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -274,10 +274,10 @@ #{item} - + and t2.Monitor_Flag = #{deviceInfoParam.monitorFlag} - + and t2.Power_Flag = #{deviceInfoParam.powerFlag} @@ -674,6 +674,22 @@ AND A5.Pid = A6.Id AND A6.`Name` = F.Area_Code + + + + + + + + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/OnlinerateMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/OnlinerateMapper.xml new file mode 100644 index 000000000..5a72deff2 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/OnlinerateMapper.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsMonthFlowMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsMonthFlowMapper.xml new file mode 100644 index 000000000..4e07d4473 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/PqsMonthFlowMapper.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java index 63429cd74..8eee7590a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/LineService.java @@ -1,9 +1,12 @@ package com.njcn.device.pq.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.param.PqsParam; import com.njcn.device.pq.pojo.po.Line; import com.njcn.device.pq.pojo.po.LineDetail; import com.njcn.device.pq.pojo.po.Overlimit; @@ -114,6 +117,16 @@ public interface LineService { */ List getLineRunStatistics(DeviceInfoParam.BusinessParam deviceInfoParam); + /** + * 获取终端运行统计 + * @param deviceInfoParam + * @return + */ + + List getDeviceRunStatistics(DeviceInfoParam.BusinessParam deviceInfoParam); + + + /** * 获取详细的统计数据 * @param startTime 起始时间 @@ -192,4 +205,6 @@ public interface LineService { * @Date: 2022/11/9 */ Integer getLineCountBySubstation(String subIndex); + + PagegetNewDeviceRunStatistics(PqsParam deviceInfoParam); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java index daada241c..ae4342a7e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/GeneralDeviceService.java @@ -272,6 +272,9 @@ public class GeneralDeviceService { dataType.add(1); break; } + /** + * 数据类型(0:暂态系统;1:稳态系统;2:两个系统) + */ deviceType.setDataType(dataType); } @@ -283,54 +286,73 @@ public class GeneralDeviceService { * @param devModel 终端模型 * @return 部门分类终端信息 */ - public List getDeviceInfo(DeviceInfoParam deviceInfoParam, List runFlag, List devModel) { + public List getDeviceInfo(DeviceInfoParam deviceInfoParam, + List runFlag, + List devModel) + { //定义待返回终端信息 List deviceInfos = new ArrayList<>(); //初始化终端查询条件 DeviceType deviceType = new DeviceType(); if (CollectionUtil.isEmpty(devModel)) { + /** + * 终端模型(0:虚拟设备;1:实际设备;2:离线设备;)默认是实际设备 + */ deviceType.setDevModel(null); } else { deviceType.setDevModel(devModel); } if (CollectionUtil.isEmpty(runFlag)) { + /** + * 终端状态(0:投运;1:热备用;2:停运) + */ deviceType.setRunFlag(null); } else { deviceType.setRunFlag(runFlag); } filterDataType(deviceType, deviceInfoParam.getServerName()); - //初始化部门筛选条件 + // 初始化部门筛选条件 List deptType = WebUtil.filterDeptType(); - //获取包括当前部门的后代所有部门信息 + // 获取包括当前部门的后代所有部门信息 List deptInfos = deptFeignClient.getDeptDescendantIndexes(deviceInfoParam.getDeptIndex(), deptType).getData(); + // 过滤非直接后代部门,集合直接子部门 List directDeptInfos = deptInfos.stream() .filter(deptDTO -> deptDTO.getPid().equals(deviceInfoParam.getDeptIndex())).sorted(Comparator.comparing(DeptDTO::getSort)) .collect(Collectors.toList()); if (CollectionUtil.isEmpty(directDeptInfos)) { - //没有直接子部门,获取当前部门所有信息 - List dept = deptInfos.stream() - .filter(deptDTO -> deptDTO.getId().equals(deviceInfoParam.getDeptIndex())) - .collect(Collectors.toList()); - deviceInfos.add(getGeneralDeviceInfo(dept.get(0), deviceType, Collections.singletonList(deviceInfoParam.getDeptIndex()), deviceInfoParam)); + // 没有直接子部门(树的最底层),获取当前部门所有信息 +// List dept = deptInfos.stream() +// .filter(deptDTO -> deptDTO.getId().equals(deviceInfoParam.getDeptIndex())) +// .collect(Collectors.toList()); + deviceInfos.add(getGeneralDeviceInfo( + // dept.get(0), + deptInfos.get(0), + deviceType, + Collections.singletonList(deviceInfoParam.getDeptIndex()), + deviceInfoParam)); } else { - for (DeptDTO deptDTO : directDeptInfos) { - //筛选上级部门pids包含该id的所有部门 + for (DeptDTO directDeptDTO : directDeptInfos) { + //筛选上级部门pids包含该id的所有部门 直接子部门下属所有部门 List descendantDeptDTO = deptInfos.stream() - .filter(d -> d.getPids().contains(deptDTO.getId())) + .filter(d -> d.getPids().contains(directDeptDTO.getId())) .collect(Collectors.toList()); //形成需要查询监测点的部门索引 List indexes = descendantDeptDTO.stream() .map(DeptDTO::getId) .distinct() .collect(Collectors.toList()); - indexes.add(deptDTO.getId()); - deviceInfos.add(getGeneralDeviceInfo(deptDTO, deviceType, indexes, deviceInfoParam)); + indexes.add(directDeptDTO.getId()); + GeneralDeviceDTO generalDeviceInfo = getGeneralDeviceInfo(directDeptDTO, deviceType, indexes, deviceInfoParam); + deviceInfos.add(generalDeviceInfo); } } //判断统计类型 + if (deviceInfoParam.getStatisticalType()==null) { + deviceInfoParam.setStatisticalType(new SimpleDTO()); + } StatisticsEnum statisticsEnum = StatisticsEnum.getStatisticsEnumByCode(deviceInfoParam.getStatisticalType().getCode()); switch (statisticsEnum) { case VOLTAGE_LEVEL: @@ -345,22 +367,39 @@ public class GeneralDeviceService { } - private GeneralDeviceDTO getGeneralDeviceInfo(DeptDTO deptDTO, DeviceType deviceType, List ids, DeviceInfoParam deviceInfoParam) { + /** + * 根据部门id集合获取监测点信息 + * + * @param directDeptDTO 入参deptIndex的直接子部门 + * @param deviceType + * @param ids 直接子部门以及后代部门id集合 + * @param deviceInfoParam + * @return + */ + private GeneralDeviceDTO getGeneralDeviceInfo(DeptDTO directDeptDTO, + DeviceType deviceType, + List ids, + DeviceInfoParam deviceInfoParam) + { GeneralDeviceDTO generalDeviceDTO = new GeneralDeviceDTO(); - generalDeviceDTO.setIndex(deptDTO.getId()); - if (deptDTO.getType() == 0) { - generalDeviceDTO.setName(deptDTO.getArea()); + generalDeviceDTO.setIndex(directDeptDTO.getId()); + // type:部门类型 0-非自定义;1-web自定义;2-App自定义;3-web测试 + if (directDeptDTO.getType() == 0) { + generalDeviceDTO.setName(directDeptDTO.getArea()); } else { - generalDeviceDTO.setName(deptDTO.getName()); + generalDeviceDTO.setName(directDeptDTO.getName()); } + // 根据部门ids集合查询是否绑定监测点 部门和监测点关联关系中间表:pq_dept_line 可以一对多 List deptLines = deptLineService.selectDeptBindLines(ids); - //返回空数据 + // 返回空数据 if (CollectionUtil.isEmpty(deptLines)) { return generalDeviceDTO; } - //获取line详细数据 - List lines = terminalBaseService.getLineByCondition(deptLines.stream().map(DeptLine::getLineId).collect(Collectors.toList()), deviceInfoParam); - //返回空数据 + // 提取该部门及其子部门所有监测点id + List lineIds = deptLines.stream().map(DeptLine::getLineId).collect(Collectors.toList()); + // 获取line详细数据 :根据监测点id,获取所有监测点 联查 pq_line、pq_line_detail + List lines = terminalBaseService.getLineByCondition(lineIds, deviceInfoParam); + // 返回空数据 if (CollectionUtil.isEmpty(lines)) { return generalDeviceDTO; } @@ -370,16 +409,18 @@ public class GeneralDeviceService { String[] idsArray = line.getPids().split(","); return idsArray[4]; }).collect(Collectors.toList()); - //再根据终端条件筛选合法终端信息 - List devices = terminalBaseService.getDeviceByCondition(devIds, deviceType, deviceInfoParam.getManufacturer()); - - //筛选出母线id,理论上监测点的pids中第六个id为母线id + // 再根据终端条件筛选合法终端信息 联查:pq_line t1,pq_device t2 + List devices = terminalBaseService.getDeviceByCondition(devIds, + deviceType, + deviceInfoParam.getManufacturer()); + //筛选出母线id,理论上监测点的pids中第六个id为母线id 联查: pq_line t1 ,pq_voltage t2 List voltageIds = lines.stream().map(line -> { String[] idsArray = line.getPids().split(","); return idsArray[5]; }).collect(Collectors.toList()); //再根据电压等级筛选合法母线信息 - List voltages = terminalBaseService.getVoltageByCondition(voltageIds, deviceInfoParam.getScale()); + List voltages = terminalBaseService.getVoltageByCondition(voltageIds, + deviceInfoParam.getScale()); //筛选最终的数据 dealDeviceData(generalDeviceDTO, lines, devices, voltages); return generalDeviceDTO; @@ -400,7 +441,8 @@ public class GeneralDeviceService { for (Line line : lines) { String[] idsArray = line.getPids().split(","); //监测点同时满足条件筛选后的终端、母线信息,才是最终的结果 - if (devIds.contains(idsArray[LineBaseEnum.DEVICE_LEVEL.getCode()]) && volIds.contains(idsArray[LineBaseEnum.SUB_V_LEVEL.getCode()])) { + if (devIds.contains(idsArray[LineBaseEnum.DEVICE_LEVEL.getCode()]) && + volIds.contains(idsArray[LineBaseEnum.SUB_V_LEVEL.getCode()])) { gdIndexes.add(idsArray[LineBaseEnum.GD_LEVEL.getCode()]); subIndexes.add(idsArray[LineBaseEnum.SUB_LEVEL.getCode()]); deviceIndexes.add(idsArray[LineBaseEnum.DEVICE_LEVEL.getCode()]); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java index e758e05ee..ce6587d11 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LineServiceImpl.java @@ -6,6 +6,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.enums.common.ServerEnum; @@ -19,6 +21,7 @@ import com.njcn.device.pq.pojo.dto.PollutionLineDTO; import com.njcn.device.pq.pojo.dto.PollutionParamDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.device.pq.pojo.param.DeviceInfoParam; +import com.njcn.device.pq.pojo.param.PqsParam; import com.njcn.device.pq.pojo.po.*; import com.njcn.device.pq.pojo.vo.*; import com.njcn.device.pq.mapper.*; @@ -45,6 +48,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.Instant; import java.util.*; @@ -89,6 +93,10 @@ public class LineServiceImpl extends ServiceImpl implements Li private final TerminalBaseService terminalBaseService; + private final OnlineRateMapper onlineRateMapper; + + private final PqsMonthFlowMapper pqsMonthFlowMapper; + @Override @@ -279,17 +287,28 @@ public class LineServiceImpl extends ServiceImpl implements Li return lineDistributionVOList; } + + @Override public List getLineStatisticsDetail(DeviceInfoParam.BusinessParam deviceInfoParam) { List lineStatisticsDetailList = new ArrayList<>(); - int lineTail = 0, lineSaveTail = 0, normalStateTail = 0, suspendStateTail = 0, offStreamStateTail = 0, hotSpareStateTail = 0; + int deviceAddNumTail=0,deviceNumTail = 0, lineTail = 0, lineSaveTail = 0, normalStateTail = 0, suspendStateTail = 0, offStreamStateTail = 0, hotSpareStateTail = 0; + //按照条件获取实际运行终端综合信息 List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList())); for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { LineStatisticsDetailVO lineStatisticsDetail = new LineStatisticsDetailVO(); + // 区域id lineStatisticsDetail.setId(generalDeviceDTO.getIndex()); + // 区域/电压等级/干扰源类型/终端厂家 lineStatisticsDetail.setAreaName(generalDeviceDTO.getName()); + // 区域监测点总数 lineStatisticsDetail.setLineNum(generalDeviceDTO.getLineIndexes().size()); + // 区域装置总数 + lineStatisticsDetail.setDeviceNum(generalDeviceDTO.getDeviceIndexes().size()); + // 总计装置总数 + deviceNumTail += generalDeviceDTO.getDeviceIndexes().size(); + // 总计监测点总数 lineTail += generalDeviceDTO.getLineIndexes().size(); if (generalDeviceDTO.getLineIndexes().size() > 0) { //获取监测点新增数 @@ -300,10 +319,23 @@ public class LineServiceImpl extends ServiceImpl implements Li DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); int countNum = lineMapper.selectCount(lineQueryWrapper); lineSaveTail += countNum; + // 监测点新增数 lineStatisticsDetail.setAddLineNum(countNum); + + // 获取装置新增数量 + QueryWrapper deviceQueryWrapper = new QueryWrapper<>(); + deviceQueryWrapper.in("pq_line.id", generalDeviceDTO.getDeviceIndexes()); + deviceQueryWrapper.between("pq_line.Create_Time", + DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), + DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); + int deviceAddNum = lineMapper.selectCount(deviceQueryWrapper); + deviceAddNumTail += deviceAddNum; + lineStatisticsDetail.setAddDeviceNum(deviceAddNum); + LineStateVO lineStateVO; //获取状态 - lineStateVO = lineMapper.getLineStatisticsDetail(generalDeviceDTO.getLineIndexes()); + // lineStateVO = lineMapper.getLineStatisticsDetail(generalDeviceDTO.getLineIndexes()); + lineStateVO = lineMapper.getDeviceStatus(generalDeviceDTO.getDeviceIndexes()); BeanUtil.copyProperties(lineStateVO, lineStatisticsDetail); normalStateTail += lineStateVO.getNormalStateNum(); suspendStateTail += lineStateVO.getSuspendStateNum(); @@ -315,11 +347,14 @@ public class LineServiceImpl extends ServiceImpl implements Li lineStatisticsDetail.setOffStreamStateNum(0); lineStatisticsDetail.setNormalStateNum(0); lineStatisticsDetail.setSuspendStateNum(0); + lineStatisticsDetail.setAddDeviceNum(0); } lineStatisticsDetailList.add(lineStatisticsDetail); } LineStatisticsDetailVO lineStatisticsDetailVO = new LineStatisticsDetailVO(); lineStatisticsDetailVO.setAreaName("总计"); + lineStatisticsDetailVO.setAddDeviceNum(deviceAddNumTail); + lineStatisticsDetailVO.setDeviceNum(deviceNumTail); lineStatisticsDetailVO.setLineNum(lineTail); lineStatisticsDetailVO.setAddLineNum(lineSaveTail); lineStatisticsDetailVO.setNormalStateNum(normalStateTail); @@ -355,6 +390,64 @@ public class LineServiceImpl extends ServiceImpl implements Li return lineStatisticsTableList; } + @Override + public Page getNewDeviceRunStatistics( PqsParam deviceInfoParam) { + List deviceList = new ArrayList<>(); + Page page = new Page(); + List deviceInfoList = generalDeviceService.getDeviceInfo(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList())); + for (GeneralDeviceDTO generalDeviceDTO : deviceInfoList) { + List lineIndexes = generalDeviceDTO.getLineIndexes(); + List deviceIndexes = generalDeviceDTO.getDeviceIndexes(); + if (CollectionUtils.isEmpty(deviceIndexes)) { + continue; + } + // 监测点流量统计 +// deviceList = lineMapper.getNewDeviceRunStatistics(lineIndexes, +// DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), +// DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime())), +// (deviceInfoParam.getPageNum()-1)*deviceInfoParam.getPageSize(), +// deviceInfoParam.getPageSize()); + + page = lineMapper.getNewDeviceRunStatistics( + new Page(deviceInfoParam.getPageNum(), deviceInfoParam.getPageSize()), + lineIndexes, + DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), + DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); + if (CollectionUtil.isNotEmpty(page.getRecords())){ + for (LineFlowMealDetailVO device : page.getRecords()) { + BigDecimal b = new BigDecimal((device.getFlowMeal()-device.getStatisValue())/device.getFlowMeal()*100); + device.setFlowProportion(b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + } + } + + } + return page; + } + + @Override + public List getDeviceRunStatistics(DeviceInfoParam.BusinessParam deviceInfoParam) { + ArrayList lineFlowMealDetailList = new ArrayList<>(); + List deviceInfoList = generalDeviceService.getDeviceInfo(deviceInfoParam, null, Stream.of(1).collect(Collectors.toList())); + for (GeneralDeviceDTO generalDeviceDTO : deviceInfoList) { + List lineIndexes = generalDeviceDTO.getLineIndexes(); + List deviceIndexes = generalDeviceDTO.getDeviceIndexes(); + if (CollectionUtils.isEmpty(deviceIndexes)) { + continue; + } + LineFlowMealDetailVO lineFlowMealDetailVO = new LineFlowMealDetailVO(); + lineFlowMealDetailVO.setId(generalDeviceDTO.getIndex()); + lineFlowMealDetailVO.setName(generalDeviceDTO.getName()); + lineFlowMealDetailVO.setLevel(1); + //组装父级数据树 + List treeList = getFlowTreeData(lineIndexes, deviceIndexes, deviceInfoParam); + lineFlowMealDetailVO.setChildren(treeList); + lineFlowMealDetailList.add(lineFlowMealDetailVO); + + } + + return lineFlowMealDetailList; + } + @Override public List getLineRunStatistics(DeviceInfoParam.BusinessParam deviceInfoParam) { List lineFlowMealDetailList = new ArrayList<>(); @@ -377,6 +470,8 @@ public class LineServiceImpl extends ServiceImpl implements Li return lineFlowMealDetailList; } + + @Override public LineStaticsViewVO getLineStaticsView(String startTime, String endTime, String lineId) { //根据监测点id获取终端id @@ -404,52 +499,70 @@ public class LineServiceImpl extends ServiceImpl implements Li /** * 获取父级每层数据 */ - private List getFlowTreeData(List lineIndexes, List devIndexs, DeviceInfoParam.BusinessParam steadyParam) { - //在线率 - List lineInfluxDbOnlineVO = getOnlineData(devIndexs, steadyParam); - //数据完整性 - List lineInfluxDbInegrityVO = getInegrityData(lineIndexes, steadyParam); - //监测点集合 - List monitorList = lineMapper.getLineRunStatistics(lineIndexes, DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchEndTime()))); + private List getFlowTreeData(List lineIndexes, List devIndexs, DeviceInfoParam.BusinessParam deviceInfoParam) { + // 在线率(设备) + List lineInfluxDbOnlineVO = getOnlineData(devIndexs, deviceInfoParam); + // 数据完整性(监测点) + List lineInfluxDbInegrityVO = getInegrityData(lineIndexes, deviceInfoParam); + // 监测点运行统计 + List monitorList = lineMapper.getLineRunStatistics(lineIndexes, DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); + // List monitorList = lineMapper.getDeviceRunStatistics(devIndexs, DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); for (LineFlowMealDetailVO lineFlowMealDetailVO : monitorList) { for (LineInfluxDbInegrityVO lineInfluxDbInegrity : lineInfluxDbInegrityVO) { if (lineFlowMealDetailVO.getId().equals(lineInfluxDbInegrity.getLineId())) { - BigDecimal flow = new BigDecimal(lineInfluxDbInegrity.getIntegrity().floatValue()); - lineFlowMealDetailVO.setIntegrity(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + lineFlowMealDetailVO.setDue(lineInfluxDbInegrity.getDue()); + lineFlowMealDetailVO.setReal(lineInfluxDbInegrity.getReal()); + } else { + lineFlowMealDetailVO.setDue(1440); + lineFlowMealDetailVO.setReal(1440); } } } - //母线集合 + // 母线集合 List busBarList = lineMapper.getFlowLineInfoByTableList(monitorList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList())); - //终端集合 - List deviceList = lineMapper.getFlowLineRunStatistics(busBarList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList()), DateUtil.endOfDay(DateUtil.parse(steadyParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchEndTime()))); + // 终端集合 + List deviceList = lineMapper.getFlowLineRunStatistics(busBarList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList()), DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))); for (LineFlowMealDetailVO lineFlowMealDetailVO : deviceList) { - System.out.println(lineFlowMealDetailVO.getId()); - Float staticsValue = getStatisValueFlow(lineFlowMealDetailVO.getId(), steadyParam); + int deviceDue=0,deviceReal=0; + Float staticsValue = getStatisValueFlow(lineFlowMealDetailVO.getId(), deviceInfoParam); BigDecimal b = new BigDecimal(staticsValue); float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); lineFlowMealDetailVO.setStatisValue(f1); BigDecimal flow = new BigDecimal(f1 / lineFlowMealDetailVO.getFlowMeal() * 100); - //获取流量占比 + // 获取流量占比 lineFlowMealDetailVO.setFlowProportion(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + // 在线率 for (LineInfluxDbOnlineVO lineInfluxDbOnline : lineInfluxDbOnlineVO) { if (lineFlowMealDetailVO.getId().equals(lineInfluxDbOnline.getDevIndex())) { BigDecimal flowValue = new BigDecimal(lineInfluxDbOnline.getOnlineRate().floatValue()); lineFlowMealDetailVO.setOnlineRate(flowValue.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); } } + + // 数据完整性 + for (LineFlowMealDetailVO monitor : monitorList) { + if (monitor.getDeviceId().equals(lineFlowMealDetailVO.getId())){ + deviceDue+=monitor.getDue(); + deviceReal+=monitor.getReal(); + } + } + float integrity = BigDecimal.valueOf((double) deviceReal / deviceDue).setScale(2, RoundingMode.HALF_UP).floatValue(); + lineFlowMealDetailVO.setIntegrity(integrity); + } - //变电站集合 + // 变电站集合 List substationList = lineMapper.getFlowLineInfoByTableList(deviceList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList())); - //供电公司集合 + // 供电公司集合 List powerCompanyList = lineMapper.getFlowLineInfoByTableList(substationList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList())); setFlowChildesList(substationList, deviceList); - setFlowDeChildesList(deviceList, monitorList); + // setFlowDeChildesList(deviceList, monitorList); - powerCompanyList.stream().peek(item -> item.setChildren(getFlowChildCategoryList(item, substationList))).collect(Collectors.toList()); + powerCompanyList.stream() + .peek(item -> item.setChildren(getFlowChildCategoryList(item, substationList))) + .collect(Collectors.toList()); return powerCompanyList; } @@ -470,9 +583,9 @@ public class LineServiceImpl extends ServiceImpl implements Li }).collect(Collectors.toList()); } - private void setFlowChildesList(List item, List childes) { + private void setFlowChildesList(List item, List childrenList) { Map> groupLine; - groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> { + groupLine = childrenList.stream().collect(Collectors.groupingBy(steadyQualifyVO -> { String[] pid = steadyQualifyVO.getPids().split(","); return pid[LineBaseEnum.SUB_LEVEL.getCode()]; })); @@ -494,15 +607,15 @@ public class LineServiceImpl extends ServiceImpl implements Li * 获取父级每层数据 */ private List getTreeData(List lineIndexes, DeviceInfoParam.BusinessParam steadyParam) { - //监测点集合 + // 监测点集合 List monitorList = lineMapper.getLineStatisticsTableData(lineIndexes); - //母线集合 + // 母线集合 List busBarList = lineMapper.getLineInfoByTableList(monitorList.stream().map(LineStatisticsTableVO::getPid).distinct().collect(Collectors.toList())); - //终端集合 + // 终端集合 List deviceList = lineMapper.getLineInfoByTableList(busBarList.stream().map(LineStatisticsTableVO::getPid).distinct().collect(Collectors.toList())); - //变电站集合 + // 变电站集合 List substationList = lineMapper.getLineInfoByTableList(deviceList.stream().map(LineStatisticsTableVO::getPid).distinct().collect(Collectors.toList())); - //供电公司集合 + // 供电公司集合 List powerCompanyList = lineMapper.getLineInfoByTableList(substationList.stream().map(LineStatisticsTableVO::getPid).distinct().collect(Collectors.toList())); setChildesList(substationList, monitorList); @@ -533,20 +646,20 @@ public class LineServiceImpl extends ServiceImpl implements Li } public List getOnlineData(List devIndexs, DeviceInfoParam.BusinessParam deviceInfoParam) { - //组装sql语句 + // 组装sql语句 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))).append("' and "); for (int i = 0; i < devIndexs.size(); i++) { if (devIndexs.size() - i != 1) { - stringBuilder.append("dev_index ='").append(devIndexs.get(i)).append("' or "); + stringBuilder.append("dev_id ='").append(devIndexs.get(i)).append("' or "); } else { - stringBuilder.append("dev_index ='").append(devIndexs.get(i)).append("' "); + stringBuilder.append("dev_id ='").append(devIndexs.get(i)).append("' "); } } - stringBuilder.append(InfluxDBPublicParam.TIME_ZONE); - String sql = "select sum(onlinemin)/(sum(onlinemin) +sum(offlinemin))*100 as onlinerate from pqs_onlinerate where " + stringBuilder.toString() + "group by dev_index"; - //获取暂降事件 + // stringBuilder.append(InfluxDBPublicParam.TIME_ZONE); + String sql = "select sum(online_min)/(sum(online_min) +sum(offline_min))*100 as online_rate from pqs_onlinerate where " + stringBuilder.toString() + " group by dev_id "+InfluxDBPublicParam.TIME_ZONE; + // 获取暂降事件 QueryResult result = influxDbUtils.query(sql); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List eventDetailList = influxDBResultMapper.toPOJO(result, LineInfluxDbOnlineVO.class); @@ -554,7 +667,7 @@ public class LineServiceImpl extends ServiceImpl implements Li } public List getInegrityData(List lineIndexes, DeviceInfoParam.BusinessParam deviceInfoParam) { - //组装sql语句 + // 组装sql语句 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime()))).append("' and "); for (int i = 0; i < lineIndexes.size(); i++) { @@ -565,8 +678,9 @@ public class LineServiceImpl extends ServiceImpl implements Li } } - String sql = "select sum(real)/(sum(due))*100 as integrity from pqs_integrity where " + stringBuilder.toString() + "group by line_id"; - //获取暂降事件 + //String sql = "select sum(real)/(sum(due))*100 as integrity from pqs_integrity where " + stringBuilder.toString() + "group by line_id"; + String sql = "select due as due, real as real from pqs_integrity where " + stringBuilder.toString() + "group by line_id"; + // 获取暂降事件 QueryResult result = influxDbUtils.query(sql); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); List eventDetailList = influxDBResultMapper.toPOJO(result, LineInfluxDbInegrityVO.class); @@ -629,8 +743,8 @@ public class LineServiceImpl extends ServiceImpl implements Li //组装sql语句 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(steadyParam.getSearchEndTime()))).append("' and "); - stringBuilder.append("line_id ='").append(lineIndex).append("' "); - String sql = "select sum(statis_value)/1024/1024 as statisValue from pqs_statis_flow where " + stringBuilder.toString() + " group by line_id tz('Asia/Shanghai')"; + stringBuilder.append("device_id ='").append(lineIndex).append("' "); + String sql = "select sum(actual_value)/1024/1024 as statisValue from pqs_month_flow where " + stringBuilder.toString() + " group by device_id tz('Asia/Shanghai')"; //获取统计流量 Float staticsValue = 0f; QueryResult result = influxDbUtils.query(sql); @@ -676,7 +790,8 @@ public class LineServiceImpl extends ServiceImpl implements Li DeviceAbnormalVO deviceAbnormalVO = new DeviceAbnormalVO(); //获取所有监测点 List generalDeviceDTOList = generalDeviceService.getDeviceInfo(conditionBusinessParam, null, Stream.of(1).collect(Collectors.toList())); - List lineIndexs = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); + List lineIndexs = generalDeviceDTOList.stream() + .flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); if (conditionBusinessParam.getTimeFlag() == 0) { List intervalTime = this.getIntervalTime(conditionBusinessParam.getSearchBeginTime(), conditionBusinessParam.getSearchEndTime()); List abnomalCommuncateVOS = new ArrayList<>(); @@ -823,6 +938,8 @@ public class LineServiceImpl extends ServiceImpl implements Li return count; } + + /** * 根据用户选择的时间区间返回月份日期 */