冀北监测点试运行功能提交

This commit is contained in:
cdf
2024-05-22 17:50:08 +08:00
parent 7a7ece5acd
commit 5d97d4489e
26 changed files with 789 additions and 60 deletions

View File

@@ -54,7 +54,7 @@ public class CommLineController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLineDetailBatch")
@ApiOperation("批量获取监测点信息")
public HttpResult<List<LineDTO>> getLineDetailBatch(@RequestParam("ids") List<String> ids) {
public HttpResult<List<LineDTO>> getLineDetailBatch(@RequestBody List<String> ids) {
String methodDescribe = getMethodDescribe("getLineDetailBatch");
List<LineDTO> result = lineService.getLineDetailBatch(ids);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);

View File

@@ -8,8 +8,10 @@ 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.dto.LineDataQualityDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
@@ -116,4 +118,14 @@ public class LineIntegrityDataController extends BaseController {
Float integrity = irStatIntegrityDService.getTotalIntegrityByLineIds(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, integrity, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/lineDataQuality")
@ApiOperation("获取监测点的在线率和数据完成性")
@ApiImplicitParam(name = "lineIds", value = "参数实体", required = true)
public HttpResult<List<LineDataQualityDTO>> getLineDataQuality(@RequestBody LineDataQualityParam lineDataQualityParam) {
String methodDescribe = getMethodDescribe("getLineDataQuality");
List<LineDataQualityDTO> result = irStatIntegrityDService.getLineDataQuality(lineDataQualityParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,result,methodDescribe);
}
}

View File

@@ -6,7 +6,9 @@ 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.mapper.RStatOnlinerateDMapper;
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
@@ -84,4 +86,10 @@ public class TerminalOnlineRateDataController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,onlineRateByDevIds,methodDescribe);
}
}

View File

@@ -2,9 +2,13 @@ package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import java.util.List;
/**
* <p>
* 数据完整性日表 服务类
@@ -22,4 +26,7 @@ public interface IRStatIntegrityDService extends IService<RStatIntegrityD> {
* @Date: 2024/1/8 13:59
*/
Float getTotalIntegrityByLineIds(LineBaseQueryParam param);
List<LineDataQualityDTO> getLineDataQuality(LineDataQualityParam lineDataQualityParam);
}

View File

@@ -1,13 +1,31 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.date.DatePattern;
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.extension.service.impl.ServiceImpl;
import com.njcn.device.pq.mapper.LineMapper;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
import com.njcn.device.pq.service.IRStatIntegrityDService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* <p>
* 数据完整性日表 服务实现类
@@ -17,10 +35,67 @@ import org.springframework.stereotype.Service;
* @since 2023-03-28
*/
@Service
@RequiredArgsConstructor
public class RStatIntegrityDServiceImpl extends ServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
private final RStatOnlinerateDMapper onlineRateMapper;
private final RStatIntegrityDMapper rStatIntegrityDMapper;
private final LineMapper lineMapper;
@Override
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
return this.baseMapper.selectTotalIntegrityByLineIds(param);
}
@Override
public List<LineDataQualityDTO> getLineDataQuality(LineDataQualityParam lineDataQualityParam) {
List<String> lineIds = lineDataQualityParam.getLineIds();
List<Line> lineList = lineMapper.selectList(new LambdaQueryWrapper<Line>().in(Line::getId,lineIds));
lineList = lineList.stream().peek(item->{
String devId = item.getPids().split(StrUtil.COMMA)[4];
item.setPid(devId);
}).collect(Collectors.toList());
List<String> devIds = lineList.stream().map(Line::getPid).distinct().collect(Collectors.toList());
QueryWrapper<RStatOnlinerateD> onlineQuery = new QueryWrapper<>();
onlineQuery.select("dev_index,avg(online_min/offline_min+online_min) as onlineRate")
.lambda()
.in(RStatOnlinerateD::getDevIndex,devIds)
.between(RStatOnlinerateD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATETIME_FORMATTER),DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATETIME_FORMATTER))
.groupBy(RStatOnlinerateD::getDevIndex);
List<RStatOnlinerateD> rStatOnlinerateDList = onlineRateMapper.selectList(onlineQuery);
Map<String,RStatOnlinerateD> onlineMap = rStatOnlinerateDList.stream().collect(Collectors.toMap(RStatOnlinerateD::getDevIndex, Function.identity()));
QueryWrapper<RStatIntegrityD> integrityQuery = new QueryWrapper<>();
integrityQuery.select("line_index,avg(real_time/due_time) as integrityData")
.lambda()
.in(RStatIntegrityD::getLineIndex,lineIds)
.between(RStatIntegrityD::getTimeId, DateUtil.parse(lineDataQualityParam.getBeginTime(), DatePattern.NORM_DATETIME_FORMATTER),DateUtil.parse(lineDataQualityParam.getEndTime(), DatePattern.NORM_DATETIME_FORMATTER))
.groupBy(RStatIntegrityD::getLineIndex);
List<RStatIntegrityD> rStatIntegrityDList = rStatIntegrityDMapper.selectList(integrityQuery);
Map<String,RStatIntegrityD> integrityMap = rStatIntegrityDList.stream().collect(Collectors.toMap(RStatIntegrityD::getLineIndex,Function.identity()));
List<LineDataQualityDTO> result = new ArrayList<>();
for(Line item : lineList){
LineDataQualityDTO lineDataQualityDTO = new LineDataQualityDTO();
lineDataQualityDTO.setLineId(item.getId());
if(onlineMap.containsKey(item.getPid())){
lineDataQualityDTO.setOnlineRate(Double.valueOf(onlineMap.get(item.getPid()).getOnlineRate()));
}else {
lineDataQualityDTO.setOnlineRate(0.00);
}
if(integrityMap.containsKey(item.getId())){
lineDataQualityDTO.setIntegrityRate(Double.valueOf(integrityMap.get(item.getId()).getIntegrityData()));
}else {
lineDataQualityDTO.setIntegrityRate(0.00);
}
}
return result;
}
}

View File

@@ -2,21 +2,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.DatePattern;
import cn.hutool.core.date.DateTime;
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.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.biz.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.mapper.*;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
import com.njcn.device.pq.pojo.dto.PublicDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
import com.njcn.device.pq.pojo.po.Line;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
import com.njcn.device.pq.pojo.po.TerminalOnlineRateData;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import com.njcn.device.pq.pojo.vo.OnlineRateCensusVO;
@@ -65,6 +73,7 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
/**
* 终端在线率列表
*
@@ -197,6 +206,8 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
return onlineRateCensusVO;
}
private List<PublicDTO> getCondition(List<String> deviceIndexes, String searchBeginTime, String searchEndTime) {
List<PublicDTO> publicDTOList = new ArrayList<>();
OnlineRateParam param=new OnlineRateParam();