数据中心在线率统计图表接口迁移
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.device.pq.mapper.OnlineRateMapper;
|
||||
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.TerminalOnlineRateDataParam;
|
||||
import com.njcn.device.pq.pojo.po.OnlineRate;
|
||||
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.TerminalOnlineRateDataVO;
|
||||
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
||||
@@ -20,6 +22,7 @@ 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;
|
||||
@@ -57,6 +60,16 @@ public class TerminalOnlineRateDataController extends BaseController {
|
||||
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)
|
||||
@PostMapping("/getOnlineRateByDevIds")
|
||||
@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.TerminalOnlineRateDataParam;
|
||||
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
|
||||
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -20,4 +21,6 @@ public interface TerminalOnlineRateDataService {
|
||||
* @return
|
||||
*/
|
||||
List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam);
|
||||
|
||||
OnlineRateCensusVO getOnlineRateDataCensus(DeviceInfoParam.CompareBusinessParam onlineRateCensusParam);
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateRunFlagManage(TerminalParam terminalParam){
|
||||
public boolean updateRunFlagManage(TerminalParam terminalParam) {
|
||||
//终端状态管理
|
||||
List<Device> tem = new ArrayList<>();
|
||||
terminalParam.getIds().forEach(item-> {
|
||||
@@ -191,10 +191,6 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
|
||||
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
||||
List<DeviceDayFlow> deviceDayFlow = influxDBResultMapper.toPOJO(result, DeviceDayFlow.class);
|
||||
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()))));
|
||||
Map<String, List<DeviceDayFlow>> dayFlowMap = deviceDayFlow.stream().collect(Collectors.groupingBy(DeviceDayFlow::getDate));
|
||||
List<DeviceDayFlow> list = new ArrayList<>();
|
||||
|
||||
@@ -1,21 +1,29 @@
|
||||
package com.njcn.device.pq.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.graphbuilder.math.func.AvgFunction;
|
||||
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.enums.DeviceResponseEnum;
|
||||
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.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.po.TerminalOnlineRateData;
|
||||
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.service.IRStatOnlinerateDService;
|
||||
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
|
||||
@@ -35,6 +43,7 @@ import org.influxdb.impl.InfluxDBResultMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
@@ -55,7 +64,7 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
|
||||
private final TerminalOnlineRateDataMapper terminalOnlineRateDataMapper;
|
||||
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
private final GeneralInfo generalInfo;
|
||||
|
||||
private final GeneralDeviceService generalDeviceService;
|
||||
|
||||
@@ -63,6 +72,9 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
||||
|
||||
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 InfluxDbUtils influxDbUtils;
|
||||
|
||||
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
/**
|
||||
* influxDB相关操作
|
||||
* 查询终端的在线率
|
||||
* 前端要求: 返回百分比数据
|
||||
*/
|
||||
|
||||
private List<PublicDTO> getCondition(List<String> deviceIndexes, String startTime, String endTime) {
|
||||
List<PublicDTO> publicDTOList = new ArrayList<>();
|
||||
OnlineRateParam param=new OnlineRateParam();
|
||||
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());
|
||||
List<RStatOnlinerateVO> data = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
|
||||
if (CollUtil.isNotEmpty(data)) {
|
||||
|
||||
Reference in New Issue
Block a user