数据中心在线率统计图表接口迁移
This commit is contained in:
@@ -0,0 +1,29 @@
|
|||||||
|
package com.njcn.device.pq.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class OnlineRateCensusVO implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* x轴 统计类型
|
||||||
|
*/
|
||||||
|
private List<String> type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* y轴 数据
|
||||||
|
*/
|
||||||
|
private List<Double> single;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* y轴 同比环比数据
|
||||||
|
*/
|
||||||
|
private List<Double> ratio;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -7,10 +7,12 @@ import com.njcn.common.pojo.response.HttpResult;
|
|||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
import com.njcn.device.pq.mapper.OnlineRateMapper;
|
import com.njcn.device.pq.mapper.OnlineRateMapper;
|
||||||
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
||||||
import com.njcn.device.pq.pojo.po.OnlineRate;
|
import com.njcn.device.pq.pojo.po.OnlineRate;
|
||||||
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
||||||
|
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
|
||||||
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
||||||
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
||||||
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
||||||
@@ -20,6 +22,7 @@ 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;
|
||||||
@@ -57,6 +60,16 @@ public class TerminalOnlineRateDataController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,onlineRateData,methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,onlineRateData,methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo
|
||||||
|
@PostMapping("/getOnlineRateDataCensus")
|
||||||
|
@ApiOperation("终端在线率图表")
|
||||||
|
@ApiImplicitParam(name = "onlineRateCensusParam", value = "终端在线率参数", required = true)
|
||||||
|
public HttpResult<OnlineRateCensusVO> getOnlineRateDataCensus(@RequestBody @Validated DeviceInfoParam.CompareBusinessParam onlineRateCensusParam){
|
||||||
|
String methodDescribe = getMethodDescribe("getOnlineRateDataCensus");
|
||||||
|
OnlineRateCensusVO onlineRateCensusVO = terminalOnlineRateDataService.getOnlineRateDataCensus(onlineRateCensusParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,onlineRateCensusVO,methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@PostMapping("/getOnlineRateByDevIds")
|
@PostMapping("/getOnlineRateByDevIds")
|
||||||
@ApiOperation("终端在线率(谐波专用)")
|
@ApiOperation("终端在线率(谐波专用)")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.njcn.device.pq.service;
|
|||||||
|
|
||||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
||||||
|
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
|
||||||
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -20,4 +21,6 @@ public interface TerminalOnlineRateDataService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam);
|
List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam);
|
||||||
|
|
||||||
|
OnlineRateCensusVO getOnlineRateDataCensus(DeviceInfoParam.CompareBusinessParam onlineRateCensusParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean updateRunFlagManage(TerminalParam terminalParam){
|
public boolean updateRunFlagManage(TerminalParam terminalParam) {
|
||||||
//终端状态管理
|
//终端状态管理
|
||||||
List<Device> tem = new ArrayList<>();
|
List<Device> tem = new ArrayList<>();
|
||||||
terminalParam.getIds().forEach(item-> {
|
terminalParam.getIds().forEach(item-> {
|
||||||
@@ -191,10 +191,6 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
|
|||||||
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
||||||
List<DeviceDayFlow> deviceDayFlow = influxDBResultMapper.toPOJO(result, DeviceDayFlow.class);
|
List<DeviceDayFlow> deviceDayFlow = influxDBResultMapper.toPOJO(result, DeviceDayFlow.class);
|
||||||
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
// Instant time = deviceDayFlow.get(0).getTime();
|
|
||||||
// System.out.println(time);
|
|
||||||
// Date from = Date.from(time);
|
|
||||||
// System.out.println(from);
|
|
||||||
deviceDayFlow.forEach(t-> t.setDate(formatter.format(Date.from(t.getTime()))));
|
deviceDayFlow.forEach(t-> t.setDate(formatter.format(Date.from(t.getTime()))));
|
||||||
Map<String, List<DeviceDayFlow>> dayFlowMap = deviceDayFlow.stream().collect(Collectors.groupingBy(DeviceDayFlow::getDate));
|
Map<String, List<DeviceDayFlow>> dayFlowMap = deviceDayFlow.stream().collect(Collectors.groupingBy(DeviceDayFlow::getDate));
|
||||||
List<DeviceDayFlow> list = new ArrayList<>();
|
List<DeviceDayFlow> list = new ArrayList<>();
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
package com.njcn.device.pq.service.impl;
|
package com.njcn.device.pq.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.graphbuilder.math.func.AvgFunction;
|
import com.graphbuilder.math.func.AvgFunction;
|
||||||
|
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.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.RStatOnlinerateDMapper;
|
||||||
import com.njcn.device.pq.mapper.TerminalOnlineRateDataMapper;
|
import com.njcn.device.pq.mapper.TerminalOnlineRateDataMapper;
|
||||||
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.OnlineRateParam;
|
||||||
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
|
||||||
|
|
||||||
import com.njcn.device.pq.pojo.po.TerminalOnlineRateData;
|
import com.njcn.device.pq.pojo.po.TerminalOnlineRateData;
|
||||||
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
||||||
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
||||||
import com.njcn.device.pq.service.IRStatOnlinerateDService;
|
import com.njcn.device.pq.service.IRStatOnlinerateDService;
|
||||||
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
||||||
@@ -35,6 +43,7 @@ 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.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -55,7 +64,7 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
|
|
||||||
private final TerminalOnlineRateDataMapper terminalOnlineRateDataMapper;
|
private final TerminalOnlineRateDataMapper terminalOnlineRateDataMapper;
|
||||||
|
|
||||||
private final InfluxDbUtils influxDbUtils;
|
private final GeneralInfo generalInfo;
|
||||||
|
|
||||||
private final GeneralDeviceService generalDeviceService;
|
private final GeneralDeviceService generalDeviceService;
|
||||||
|
|
||||||
@@ -63,6 +72,9 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
|
|
||||||
private final DicDataFeignClient dicDataFeignClient;
|
private final DicDataFeignClient dicDataFeignClient;
|
||||||
|
|
||||||
|
private final RStatOnlinerateDMapper onlineRateMapper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -157,6 +169,58 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OnlineRateCensusVO getOnlineRateDataCensus(DeviceInfoParam.CompareBusinessParam onlineRateCensusParam) {
|
||||||
|
OnlineRateCensusVO onlineRateCensusVO = new OnlineRateCensusVO();
|
||||||
|
onlineRateCensusParam.setServerName(generalInfo.getMicroServiceName());
|
||||||
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(onlineRateCensusParam,Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
|
||||||
|
List<String> type = new ArrayList<>();
|
||||||
|
List<Double> single = new ArrayList<>(), ratio = new ArrayList<>();
|
||||||
|
if (!CollectionUtils.isEmpty(generalDeviceDTOList)) {
|
||||||
|
for (GeneralDeviceDTO generalDeviceDTO: generalDeviceDTOList){
|
||||||
|
List<String> deviceIndexes = generalDeviceDTO.getDeviceIndexes();
|
||||||
|
if (CollectionUtils.isEmpty(deviceIndexes)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
type.add(generalDeviceDTO.getName());
|
||||||
|
//根据终端索引集查询在线率
|
||||||
|
List<PublicDTO> onlineRateList = getCondition(deviceIndexes, onlineRateCensusParam.getSearchBeginTime(), onlineRateCensusParam.getSearchEndTime());
|
||||||
|
single.add(onlineRateList.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159));
|
||||||
|
//如果存在需要比较的时间,再获取对应数据
|
||||||
|
if(StrUtil.isNotBlank(onlineRateCensusParam.getPeriodBeginTime()) && StrUtil.isNotBlank(onlineRateCensusParam.getPeriodEndTime())){
|
||||||
|
List<PublicDTO> compareData = getCondition(deviceIndexes, onlineRateCensusParam.getPeriodBeginTime(), onlineRateCensusParam.getPeriodEndTime());
|
||||||
|
ratio.add(compareData.stream().mapToDouble(PublicDTO::getData).average().orElse(3.14159));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onlineRateCensusVO.setType(type);
|
||||||
|
onlineRateCensusVO.setSingle(single);
|
||||||
|
onlineRateCensusVO.setRatio(ratio);
|
||||||
|
|
||||||
|
|
||||||
|
return onlineRateCensusVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<PublicDTO> getCondition(List<String> deviceIndexes, String searchBeginTime, String searchEndTime) {
|
||||||
|
List<PublicDTO> publicDTOList = new ArrayList<>();
|
||||||
|
OnlineRateParam param=new OnlineRateParam();
|
||||||
|
param.setIds(deviceIndexes);
|
||||||
|
param.setStartTime( DateUtil.beginOfDay(DateUtil.parse(searchBeginTime)).toString());
|
||||||
|
param.setEndTime( DateUtil.endOfDay(DateUtil.parse(searchEndTime)).toString());
|
||||||
|
List<RStatOnlinerateVO> data = onlineRateMapper.getOnlineRateByDevIds(param);
|
||||||
|
if (CollUtil.isNotEmpty(data)) {
|
||||||
|
data.forEach(po -> {
|
||||||
|
PublicDTO publicDTO = new PublicDTO();
|
||||||
|
//终端在线率 保留两位小数
|
||||||
|
Double onlineRate = po.getOnlineRate() == null ? null : BigDecimal.valueOf(Double.parseDouble(po.getOnlineRate().toString())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||||
|
publicDTO.setId(po.getDevIndex());
|
||||||
|
publicDTO.setData(onlineRate);
|
||||||
|
publicDTOList.add(publicDTO);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return publicDTOList;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理变电站
|
* 处理变电站
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ public class OnlineRateDataServiceImpl implements OnlineRateDataService {
|
|||||||
|
|
||||||
private final OnlineRateDataMapper onlineRateDataMapper;
|
private final OnlineRateDataMapper onlineRateDataMapper;
|
||||||
|
|
||||||
private final InfluxDbUtils influxDbUtils;
|
|
||||||
|
|
||||||
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
||||||
|
|
||||||
private final GeneralInfo generalInfo;
|
private final GeneralInfo generalInfo;
|
||||||
@@ -142,16 +140,12 @@ public class OnlineRateDataServiceImpl implements OnlineRateDataService {
|
|||||||
return all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList());
|
return all.stream().filter(allItem -> allItem.getPid().equals(item.getId())).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* influxDB相关操作
|
|
||||||
* 查询终端的在线率
|
|
||||||
* 前端要求: 返回百分比数据
|
|
||||||
*/
|
|
||||||
private List<PublicDTO> getCondition(List<String> deviceIndexes, String startTime, String endTime) {
|
private List<PublicDTO> getCondition(List<String> deviceIndexes, String startTime, String endTime) {
|
||||||
List<PublicDTO> publicDTOList = new ArrayList<>();
|
List<PublicDTO> publicDTOList = new ArrayList<>();
|
||||||
OnlineRateParam param=new OnlineRateParam();
|
OnlineRateParam param=new OnlineRateParam();
|
||||||
param.setIds(deviceIndexes);
|
param.setIds(deviceIndexes);
|
||||||
param.setStartTime( DateUtil.beginOfDay(DateUtil.parse(startTime)).toString());
|
param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(startTime)).toString());
|
||||||
param.setEndTime( DateUtil.endOfDay(DateUtil.parse(endTime)).toString());
|
param.setEndTime( DateUtil.endOfDay(DateUtil.parse(endTime)).toString());
|
||||||
List<RStatOnlinerateVO> data = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
|
List<RStatOnlinerateVO> data = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
|
||||||
if (CollUtil.isNotEmpty(data)) {
|
if (CollUtil.isNotEmpty(data)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user