运维中心数据完整性统计图标接口迁移
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
package com.njcn.device.pq.pojo.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PublicDTO {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
private Double data;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.njcn.harmonic.pojo.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class IntegrityIconVO implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* x轴 统计类型
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("x轴 统计类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* y轴 数据
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("初始数据")
|
||||||
|
private Double single;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* y轴 同比环比数据
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("同比环比数据")
|
||||||
|
private Double ratio;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -101,6 +101,9 @@ public class TerminalOnlineRateDataVO implements Serializable {
|
|||||||
@ApiModelProperty(name = "lineGrade",value = "终端等级")
|
@ApiModelProperty(name = "lineGrade",value = "终端等级")
|
||||||
private String lineGrade;
|
private String lineGrade;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "subScale",value = "变电站电压等级")
|
||||||
|
private String subScale;
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率 0:不合格 1:合格")
|
@ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率 0:不合格 1:合格")
|
||||||
private Integer valueOver;
|
private Integer valueOver;
|
||||||
|
|||||||
@@ -6,15 +6,18 @@ import com.njcn.common.pojo.enums.common.LogEnum;
|
|||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||||
|
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParam;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@@ -50,4 +53,16 @@ public class LineIntegrityDataController extends BaseController {
|
|||||||
List<LineIntegrityDataVO> integrityDataOfLine = lineIntegrityDataService.getIntegrityDataOfLine(lineIntegrityDataParam);
|
List<LineIntegrityDataVO> integrityDataOfLine = lineIntegrityDataService.getIntegrityDataOfLine(lineIntegrityDataParam);
|
||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,integrityDataOfLine,methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,integrityDataOfLine,methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@PostMapping("/getIntegrityIcon")
|
||||||
|
@ApiOperation("数据完整性图表")
|
||||||
|
@ApiImplicitParam(name = "integrityIconParam", value = "数据完整性参数", required = true)
|
||||||
|
public HttpResult<List<IntegrityIconVO>> getIntegrityIcon(@RequestBody @Validated DeviceInfoParam.CompareBusinessParam integrityIconParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("getIntegrityIcon");
|
||||||
|
List<IntegrityIconVO> integrityIconVO = lineIntegrityDataService.getIntegrityIcon(integrityIconParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, integrityIconVO, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.njcn.device.pq.service;
|
package com.njcn.device.pq.service;
|
||||||
|
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||||
|
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -18,4 +20,6 @@ public interface LineIntegrityDataService {
|
|||||||
* @return 监测点数据完整性树状实体类集合
|
* @return 监测点数据完整性树状实体类集合
|
||||||
*/
|
*/
|
||||||
List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam);
|
List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam);
|
||||||
|
|
||||||
|
List<IntegrityIconVO> getIntegrityIcon(DeviceInfoParam.CompareBusinessParam integrityIconParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,30 @@
|
|||||||
package com.njcn.device.pq.service.impl;
|
package com.njcn.device.pq.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.njcn.common.config.GeneralInfo;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.device.pq.api.AlarmClient;
|
import com.njcn.device.pq.api.AlarmClient;
|
||||||
|
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
||||||
import com.njcn.device.pq.enums.DeviceResponseEnum;
|
import com.njcn.device.pq.enums.DeviceResponseEnum;
|
||||||
import com.njcn.device.pq.enums.LineBaseEnum;
|
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||||
import com.njcn.device.pq.mapper.LineIntegrityDataMapper;
|
import com.njcn.device.pq.mapper.LineIntegrityDataMapper;
|
||||||
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
|
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
|
||||||
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||||
|
import com.njcn.device.pq.pojo.dto.PublicDTO;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||||
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
|
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
|
||||||
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
||||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.RStatIntegrityVO;
|
||||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||||
import com.njcn.device.pq.utils.DataStatisticsUtil;
|
import com.njcn.device.pq.utils.DataStatisticsUtil;
|
||||||
|
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||||
import com.njcn.influxdb.utils.InfluxDBCommUtils;
|
import com.njcn.influxdb.utils.InfluxDBCommUtils;
|
||||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||||
@@ -30,6 +38,9 @@ import org.influxdb.impl.InfluxDBResultMapper;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.text.Collator;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -57,6 +68,10 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
|
|
||||||
private final RStatIntegrityDMapper rStatIntegrityDMapper;
|
private final RStatIntegrityDMapper rStatIntegrityDMapper;
|
||||||
|
|
||||||
|
private final GeneralInfo generalInfo;
|
||||||
|
|
||||||
|
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监测点数据完整性
|
* 监测点数据完整性
|
||||||
*
|
*
|
||||||
@@ -182,6 +197,60 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<IntegrityIconVO> getIntegrityIcon(DeviceInfoParam.CompareBusinessParam integrityIconParam) {
|
||||||
|
integrityIconParam.setServerName(generalInfo.getMicroServiceName());
|
||||||
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceInfoClient.getPracticalRunDeviceInfo(integrityIconParam).getData();
|
||||||
|
List<IntegrityIconVO> out = new ArrayList<>();
|
||||||
|
if (!CollectionUtils.isEmpty(generalDeviceDTOList)) {
|
||||||
|
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
|
||||||
|
IntegrityIconVO outParam = new IntegrityIconVO();
|
||||||
|
List<String> lineIndexes = generalDeviceDTO.getLineIndexes();
|
||||||
|
if (CollectionUtils.isEmpty(lineIndexes)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
outParam.setType(generalDeviceDTO.getName());
|
||||||
|
//根据监测点查询数据完整性
|
||||||
|
List<PublicDTO> integrityData = getCondition(lineIndexes, integrityIconParam.getSearchBeginTime(), integrityIconParam.getSearchEndTime());
|
||||||
|
outParam.setSingle(integrityData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159));
|
||||||
|
//如果存在需要比较的时间,再获取对应数据
|
||||||
|
if (StrUtil.isNotBlank(integrityIconParam.getPeriodBeginTime()) && StrUtil.isNotBlank(integrityIconParam.getPeriodEndTime())) {
|
||||||
|
List<PublicDTO> compareData = getCondition(lineIndexes, integrityIconParam.getPeriodBeginTime(), integrityIconParam.getPeriodEndTime());
|
||||||
|
outParam.setRatio(compareData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159));
|
||||||
|
}
|
||||||
|
out.add(outParam);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
out.sort(new Comparator<IntegrityIconVO>() {
|
||||||
|
@Override
|
||||||
|
public int compare(IntegrityIconVO o1, IntegrityIconVO o2) {
|
||||||
|
Comparator<Object> com = Collator.getInstance(Locale.CHINA);
|
||||||
|
return com.compare(o1.getType(), o2.getType());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<PublicDTO> getCondition(List<String> lineList, String startTime, String endTime) {
|
||||||
|
List<PublicDTO> integrityList = new ArrayList<>();
|
||||||
|
OnlineRateParam param = new OnlineRateParam();
|
||||||
|
param.setIds(lineList);
|
||||||
|
param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString());
|
||||||
|
param.setEndTime(DateUtil.endOfDay(DateUtil.parse(endTime)).toString());
|
||||||
|
List<RStatIntegrityVO> data = rStatIntegrityDMapper.getOnIntegrityByIds(param);
|
||||||
|
if (!CollectionUtils.isEmpty(data)) {
|
||||||
|
data.forEach(po -> {
|
||||||
|
PublicDTO publicDTO = new PublicDTO();
|
||||||
|
//数据完整性 保留四位小数
|
||||||
|
Double integrity = po.getIntegrityRate() == null ? 3.14159 : BigDecimal.valueOf(Double.parseDouble(po.getIntegrityRate().toString())).setScale(2, RoundingMode.HALF_UP).doubleValue();
|
||||||
|
publicDTO.setId(po.getLineIndex());
|
||||||
|
publicDTO.setData((integrity > 100.00) ? 100.00 : integrity);
|
||||||
|
integrityList.add(publicDTO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return integrityList;
|
||||||
|
}
|
||||||
|
|
||||||
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm,List<LineIntegrityDataVO> proList) {
|
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm,List<LineIntegrityDataVO> proList) {
|
||||||
for (LineIntegrityDataVO proItem : proList) {
|
for (LineIntegrityDataVO proItem : proList) {
|
||||||
|
|||||||
Reference in New Issue
Block a user