运维中心数据完整性统计图标接口迁移
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 = "终端等级")
|
||||
private String lineGrade;
|
||||
|
||||
@ApiModelProperty(name = "subScale",value = "变电站电压等级")
|
||||
private String subScale;
|
||||
|
||||
|
||||
@ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率 0:不合格 1:合格")
|
||||
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.response.HttpResult;
|
||||
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.vo.LineIntegrityDataVO;
|
||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||
import com.njcn.web.controller.BaseController;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -50,4 +53,16 @@ public class LineIntegrityDataController extends BaseController {
|
||||
List<LineIntegrityDataVO> integrityDataOfLine = lineIntegrityDataService.getIntegrityDataOfLine(lineIntegrityDataParam);
|
||||
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;
|
||||
|
||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -18,4 +20,6 @@ public interface LineIntegrityDataService {
|
||||
* @return 监测点数据完整性树状实体类集合
|
||||
*/
|
||||
List<LineIntegrityDataVO> getIntegrityDataOfLine(LineIntegrityDataParam lineIntegrityDataParam);
|
||||
|
||||
List<IntegrityIconVO> getIntegrityIcon(DeviceInfoParam.CompareBusinessParam integrityIconParam);
|
||||
}
|
||||
|
||||
@@ -1,22 +1,30 @@
|
||||
package com.njcn.device.pq.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.common.config.GeneralInfo;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
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.LineBaseEnum;
|
||||
import com.njcn.device.pq.mapper.LineIntegrityDataMapper;
|
||||
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
|
||||
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.OnlineRateParam;
|
||||
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
|
||||
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.RStatIntegrityVO;
|
||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||
import com.njcn.device.pq.utils.DataStatisticsUtil;
|
||||
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||
import com.njcn.influxdb.utils.InfluxDBCommUtils;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
@@ -30,6 +38,9 @@ import org.influxdb.impl.InfluxDBResultMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.Collator;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -57,6 +68,10 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
|
||||
|
||||
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) {
|
||||
for (LineIntegrityDataVO proItem : proList) {
|
||||
|
||||
Reference in New Issue
Block a user