冀北完整性功能重新开发
This commit is contained in:
@@ -15,6 +15,9 @@ import java.time.LocalDateTime;
|
|||||||
@Data
|
@Data
|
||||||
public class LineDetailVO implements Serializable {
|
public class LineDetailVO implements Serializable {
|
||||||
|
|
||||||
|
@ApiModelProperty("部门名称")
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
@ApiModelProperty("供电公司名称")
|
@ApiModelProperty("供电公司名称")
|
||||||
private String gdName;
|
private String gdName;
|
||||||
|
|
||||||
@@ -92,6 +95,16 @@ public class LineDetailVO implements Serializable {
|
|||||||
|
|
||||||
@ApiModelProperty("已用流量占比")
|
@ApiModelProperty("已用流量占比")
|
||||||
private Float flowProportion;
|
private Float flowProportion;
|
||||||
|
|
||||||
|
@ApiModelProperty("电网标志 0-电网侧;1-非电网侧")
|
||||||
|
private Integer powerFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "监测点运行状态")
|
||||||
|
private String lineRunType;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "终端厂家")
|
||||||
|
private String manufacturer;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -84,4 +84,35 @@ public class DeviceOnlineRate {
|
|||||||
private String onlineRate;
|
private String onlineRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class LineDetail {
|
||||||
|
|
||||||
|
@ApiModelProperty("地市")
|
||||||
|
private String cit;
|
||||||
|
|
||||||
|
@ApiModelProperty("供电公司")
|
||||||
|
private String company;
|
||||||
|
|
||||||
|
@ApiModelProperty("变电站")
|
||||||
|
private String subStation;
|
||||||
|
|
||||||
|
@ApiModelProperty("终端ID")
|
||||||
|
private String deviceId;
|
||||||
|
|
||||||
|
@ApiModelProperty("终端名称")
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
@ApiModelProperty("终端厂家")
|
||||||
|
private String manufacturer;
|
||||||
|
|
||||||
|
@ApiModelProperty("终端IP")
|
||||||
|
private String ip;
|
||||||
|
|
||||||
|
@ApiModelProperty("监测点运行状态")
|
||||||
|
private String runFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty("数据完整性")
|
||||||
|
private Double integrity;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package com.njcn.device.pq.controller;
|
|||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.njcn.common.pojo.annotation.OperateInfo;
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||||
@@ -17,6 +16,7 @@ import com.njcn.device.pq.pojo.param.LineDataQualityParam;
|
|||||||
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
|
||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
||||||
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
||||||
import com.njcn.device.pq.service.IRStatIntegrityDService;
|
import com.njcn.device.pq.service.IRStatIntegrityDService;
|
||||||
import com.njcn.device.pq.service.LineIntegrityDataService;
|
import com.njcn.device.pq.service.LineIntegrityDataService;
|
||||||
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
|
||||||
@@ -148,4 +148,14 @@ public class LineIntegrityDataController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,flag,methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,flag,methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@PostMapping("/data")
|
||||||
|
@ApiOperation("监测点数据完整性(冀北)")
|
||||||
|
@ApiImplicitParam(name = "param", value = "参数实体", required = true)
|
||||||
|
public HttpResult<DeviceOnlineRate> getData(@RequestBody DeviceInfoParam.BusinessParam param) {
|
||||||
|
String methodDescribe = getMethodDescribe("getData");
|
||||||
|
DeviceOnlineRate rate = irStatIntegrityDService.getData(param);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
|
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
|
||||||
import com.njcn.device.pq.pojo.dto.MonitorIntegrityDTO;
|
import com.njcn.device.pq.pojo.dto.MonitorIntegrityDTO;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
|
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
|
||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
||||||
|
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -33,4 +35,6 @@ public interface IRStatIntegrityDService extends IMppService<RStatIntegrityD> {
|
|||||||
List<LineDataQualityDTO> getLineDataQuality(LineDataQualityParam lineDataQualityParam);
|
List<LineDataQualityDTO> getLineDataQuality(LineDataQualityParam lineDataQualityParam);
|
||||||
|
|
||||||
Boolean saveOrUpdateData(List<MonitorIntegrityDTO> monitorIntegrityDTOList);
|
Boolean saveOrUpdateData(List<MonitorIntegrityDTO> monitorIntegrityDTOList);
|
||||||
|
|
||||||
|
DeviceOnlineRate getData(DeviceInfoParam.BusinessParam param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,41 @@
|
|||||||
package com.njcn.device.pq.service.impl;
|
package com.njcn.device.pq.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.device.common.service.GeneralDeviceService;
|
||||||
import com.njcn.device.line.mapper.LineDetailMapper;
|
import com.njcn.device.line.mapper.LineDetailMapper;
|
||||||
import com.njcn.device.line.mapper.LineMapper;
|
import com.njcn.device.line.mapper.LineMapper;
|
||||||
|
import com.njcn.device.line.service.LineService;
|
||||||
|
import com.njcn.device.pq.enums.RunFlagEnum;
|
||||||
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
|
||||||
|
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||||
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
|
import com.njcn.device.pq.pojo.dto.LineDataQualityDTO;
|
||||||
import com.njcn.device.pq.pojo.dto.MonitorIntegrityDTO;
|
import com.njcn.device.pq.pojo.dto.MonitorIntegrityDTO;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
||||||
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
|
import com.njcn.device.pq.pojo.param.LineDataQualityParam;
|
||||||
import com.njcn.device.pq.pojo.po.Line;
|
import com.njcn.device.pq.pojo.po.Line;
|
||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
||||||
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
||||||
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.LineDetailVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.RStatIntegrityVO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
||||||
import com.njcn.device.pq.service.IRStatIntegrityDService;
|
import com.njcn.device.pq.service.IRStatIntegrityDService;
|
||||||
import com.njcn.device.rstatintegrity.mapper.RStatIntegrityDMapper;
|
import com.njcn.device.rstatintegrity.mapper.RStatIntegrityDMapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -43,11 +54,11 @@ import java.util.stream.Collectors;
|
|||||||
public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
|
public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
|
||||||
|
|
||||||
private final RStatOnlinerateDMapper onlineRateMapper;
|
private final RStatOnlinerateDMapper onlineRateMapper;
|
||||||
|
|
||||||
private final RStatIntegrityDMapper rStatIntegrityDMapper;
|
private final RStatIntegrityDMapper rStatIntegrityDMapper;
|
||||||
|
|
||||||
private final LineMapper lineMapper;
|
private final LineMapper lineMapper;
|
||||||
private final LineDetailMapper lineDetailMapper;
|
private final LineDetailMapper lineDetailMapper;
|
||||||
|
private final GeneralDeviceService deviceService;
|
||||||
|
private final LineService lineService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
|
public Float getTotalIntegrityByLineIds(LineBaseQueryParam param) {
|
||||||
@@ -124,4 +135,76 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
|
|||||||
this.saveOrUpdateBatchByMultiId(collect1,200);
|
this.saveOrUpdateBatchByMultiId(collect1,200);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceOnlineRate getData(DeviceInfoParam.BusinessParam param) {
|
||||||
|
DeviceOnlineRate rate = new DeviceOnlineRate();
|
||||||
|
//获取终端台账类信息
|
||||||
|
List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1));
|
||||||
|
if (CollUtil.isNotEmpty(deviceInfo)) {
|
||||||
|
List<String> lineIds = deviceInfo.stream()
|
||||||
|
.flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList())
|
||||||
|
.stream()
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
rate.setTotalNum(lineIds.size());
|
||||||
|
//获取所有监测点的数据完整性
|
||||||
|
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(lineIds,param.getSearchBeginTime(),param.getSearchEndTime());
|
||||||
|
//获取所有监测点信息信息
|
||||||
|
List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(lineIds);
|
||||||
|
|
||||||
|
rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo)?calculateIntegrityRate(lineIntegrityRateInfo,90):lineIds.size());
|
||||||
|
rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo,lineIds).toString());
|
||||||
|
List<DeviceOnlineRate.CitDetail> citDetailList=new ArrayList<>();
|
||||||
|
DeviceOnlineRate.CitDetail citDetail;
|
||||||
|
DeviceOnlineRate.LineDetail detail;
|
||||||
|
for (GeneralDeviceDTO dto : deviceInfo) {
|
||||||
|
//获取部门终端集合
|
||||||
|
List<RStatIntegrityVO> citDevOnRate = lineIntegrityRateInfo.stream().filter(x -> dto.getLineIndexes().contains(x.getLineIndex())).collect(Collectors.toList());
|
||||||
|
Map<String, Double> onlineRateByDevMap = citDevOnRate.stream()
|
||||||
|
.collect(Collectors.toMap(RStatIntegrityVO::getLineIndex, RStatIntegrityVO::getIntegrityRate));
|
||||||
|
citDetail=new DeviceOnlineRate.CitDetail();
|
||||||
|
citDetail.setCitName(dto.getName());
|
||||||
|
citDetail.setCitTotalNum(dto.getLineIndexes().size());
|
||||||
|
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate)?calculateIntegrityRate(lineIntegrityRateInfo,90):dto.getLineIndexes().size());
|
||||||
|
citDetail.setCitTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo,dto.getLineIndexes()).toString());
|
||||||
|
List<DeviceOnlineRate.LineDetail> detailList = new ArrayList<>();
|
||||||
|
List<LineDetailVO.Detail> lineDetail = LineInfoByIds.stream().filter(x -> dto.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
|
||||||
|
for (LineDetailVO.Detail line : lineDetail) {
|
||||||
|
detail = new DeviceOnlineRate.LineDetail();
|
||||||
|
detail.setCit(line.getDeptName());
|
||||||
|
detail.setCompany(line.getGdName());
|
||||||
|
detail.setSubStation(line.getSubName());
|
||||||
|
detail.setDeviceId(line.getDevId());
|
||||||
|
detail.setDeviceName(line.getDevName());
|
||||||
|
detail.setManufacturer(line.getManufacturer());
|
||||||
|
detail.setIp(line.getIp());
|
||||||
|
detail.setRunFlag(RunFlagEnum.getRunFlagRemarkByStatus(Integer.valueOf(line.getLineRunType())));
|
||||||
|
detail.setIntegrity(onlineRateByDevMap.getOrDefault(line.getLineId(), 0.0));
|
||||||
|
detailList.add(detail);
|
||||||
|
}
|
||||||
|
citDetail.setDetailList(detailList);
|
||||||
|
citDetailList.add(citDetail);
|
||||||
|
}
|
||||||
|
rate.setCitDetailList(citDetailList);
|
||||||
|
}
|
||||||
|
return rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Double calculateIntegrityRate(List<RStatIntegrityVO> lineIntegrityRateInfo ,List<String> deviceIds){
|
||||||
|
List<RStatIntegrityVO> list = lineIntegrityRateInfo.stream().filter(x -> deviceIds.contains(x.getLineIndex())).collect(Collectors.toList());
|
||||||
|
if(CollUtil.isNotEmpty(list)){
|
||||||
|
BigDecimal onlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatIntegrityVO::getDueTime).sum());
|
||||||
|
BigDecimal offlineMin =BigDecimal.valueOf( list.stream().mapToLong(RStatIntegrityVO::getRealTime).sum());
|
||||||
|
BigDecimal sumMin= onlineMin.add(offlineMin);
|
||||||
|
return sumMin.doubleValue();
|
||||||
|
}
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Integer calculateIntegrityRate(List<RStatIntegrityVO> onlineRateByDev,Integer limit){
|
||||||
|
return (int) onlineRateByDev.stream().filter(x -> x.getIntegrityRate() < limit).count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1535,11 +1535,13 @@
|
|||||||
<select id="selectByIds" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$Detail">
|
<select id="selectByIds" resultType="com.njcn.device.pq.pojo.vo.LineDetailVO$Detail">
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
line.id as lineId,
|
line.id as lineId,
|
||||||
|
dept.`Name` deptName,
|
||||||
area.name as areaId,
|
area.name as areaId,
|
||||||
gd.NAME gdName,
|
gd.NAME gdName,
|
||||||
substation.NAME subName,
|
substation.NAME subName,
|
||||||
device.id devId,
|
device.id devId,
|
||||||
device.NAME devName,
|
device.NAME devName,
|
||||||
|
deviceDetail.Manufacturer manufacturer,
|
||||||
line.NAME lineName,
|
line.NAME lineName,
|
||||||
lineDetail.Time_Interval as timeInterval,
|
lineDetail.Time_Interval as timeInterval,
|
||||||
lineDetail.PT_Type as ptType,
|
lineDetail.PT_Type as ptType,
|
||||||
@@ -1552,7 +1554,9 @@
|
|||||||
deviceDetail.ip ip,
|
deviceDetail.ip ip,
|
||||||
deviceDetail.Com_Flag as comFlag,
|
deviceDetail.Com_Flag as comFlag,
|
||||||
vg.Scale as voltageLevel,
|
vg.Scale as voltageLevel,
|
||||||
voltage.name as volName
|
voltage.name as volName,
|
||||||
|
lineDetail.Power_Flag powerFlag,
|
||||||
|
lineDetail.Run_Flag lineRunType
|
||||||
FROM
|
FROM
|
||||||
pq_line line,
|
pq_line line,
|
||||||
pq_line voltage,
|
pq_line voltage,
|
||||||
@@ -1562,9 +1566,13 @@
|
|||||||
pq_line area,
|
pq_line area,
|
||||||
pq_device deviceDetail,
|
pq_device deviceDetail,
|
||||||
pq_line_detail lineDetail,
|
pq_line_detail lineDetail,
|
||||||
pq_voltage vg
|
pq_voltage vg,
|
||||||
|
pq_dept_line deptLine,
|
||||||
|
sys_dept dept
|
||||||
<where>
|
<where>
|
||||||
line.pid = voltage.id
|
line.id = deptLine.Line_Id
|
||||||
|
AND deptLine.Id = dept.Id
|
||||||
|
AND line.pid = voltage.id
|
||||||
AND voltage.pid = device.id
|
AND voltage.pid = device.id
|
||||||
AND device.pid = substation.id
|
AND device.pid = substation.id
|
||||||
AND substation.pid = gd.id
|
AND substation.pid = gd.id
|
||||||
|
|||||||
@@ -528,6 +528,9 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
|
|||||||
//获取终端等级
|
//获取终端等级
|
||||||
List<DictData> gradeType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_GRADE.getCode()).getData();
|
List<DictData> gradeType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_GRADE.getCode()).getData();
|
||||||
Map<String, Integer> gradeMap = gradeType.stream().collect(Collectors.toMap(DictData::getId, DictData::getAlgoDescribe));
|
Map<String, Integer> gradeMap = gradeType.stream().collect(Collectors.toMap(DictData::getId, DictData::getAlgoDescribe));
|
||||||
|
//获取厂家
|
||||||
|
List<DictData> manufacturerType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_MANUFACTURER.getCode()).getData();
|
||||||
|
Map<String, String> manufacturerMap = manufacturerType.stream().collect(Collectors.toMap(DictData::getId, DictData::getName));
|
||||||
|
|
||||||
for (LineDetailVO.Detail detail : details) {
|
for (LineDetailVO.Detail detail : details) {
|
||||||
//获取行政区域名称
|
//获取行政区域名称
|
||||||
@@ -549,6 +552,10 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
|
|||||||
detail.setStatisValue(flowVo.getStatisValue());
|
detail.setStatisValue(flowVo.getStatisValue());
|
||||||
detail.setFlowProportion(flowVo.getFlowProportion() * 100);
|
detail.setFlowProportion(flowVo.getFlowProportion() * 100);
|
||||||
}
|
}
|
||||||
|
//厂家
|
||||||
|
if (manufacturerMap.containsKey(detail.getManufacturer())) {
|
||||||
|
detail.setManufacturer(manufacturerMap.get(detail.getManufacturer()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return details;
|
return details;
|
||||||
|
|||||||
@@ -48,4 +48,12 @@ public interface RStatIntegrityDMapper extends MppBaseMapper<RStatIntegrityD> {
|
|||||||
* @Date: 2024/1/8 14:01
|
* @Date: 2024/1/8 14:01
|
||||||
*/
|
*/
|
||||||
Float selectTotalIntegrityByLineIds(@Param("param") LineBaseQueryParam param);
|
Float selectTotalIntegrityByLineIds(@Param("param") LineBaseQueryParam param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点数据完整性
|
||||||
|
* @author xy
|
||||||
|
* @date 2025/11/25
|
||||||
|
*/
|
||||||
|
List<RStatIntegrityVO> getLineIntegrityRateInfo(@Param("lineIds")List<String> lineIds,@Param("startTime")String startTime,@Param("endTime")String endTime);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,4 +86,28 @@
|
|||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getLineIntegrityRateInfo" resultType="RStatIntegrityVO">
|
||||||
|
select line_index lineIndex,
|
||||||
|
ROUND(sum( real_time )*1.0 / sum( due_time ) * 100,2) AS integrityRate,
|
||||||
|
sum(real_time) realTime,
|
||||||
|
sum(due_time) dueTime
|
||||||
|
from r_stat_integrity_d
|
||||||
|
<where>
|
||||||
|
<if test="lineIds!=null and lineIds.size > 0">
|
||||||
|
line_index in
|
||||||
|
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test=" startTime != null and startTime !=''">
|
||||||
|
AND time_id >= #{startTime}
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null and endTime != ''">
|
||||||
|
AND time_id <= #{endTime}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
group by line_index
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -890,6 +890,10 @@ public class GridServiceImpl implements IGridService {
|
|||||||
int allTime = list33.stream()
|
int allTime = list33.stream()
|
||||||
.mapToInt(RStatLimitRateDPO::getAllTime)
|
.mapToInt(RStatLimitRateDPO::getAllTime)
|
||||||
.sum();
|
.sum();
|
||||||
|
//总闪变次数
|
||||||
|
int allFlickerTime = list33.stream()
|
||||||
|
.mapToInt(RStatLimitRateDPO::getFlickerAllTime)
|
||||||
|
.sum();
|
||||||
//电压偏差
|
//电压偏差
|
||||||
int devTime = list33.stream()
|
int devTime = list33.stream()
|
||||||
.mapToInt(RStatLimitRateDPO::getVoltageDevOvertime)
|
.mapToInt(RStatLimitRateDPO::getVoltageDevOvertime)
|
||||||
@@ -910,11 +914,14 @@ public class GridServiceImpl implements IGridService {
|
|||||||
int ubalanceTime = list33.stream()
|
int ubalanceTime = list33.stream()
|
||||||
.mapToInt(RStatLimitRateDPO::getUbalanceOvertime)
|
.mapToInt(RStatLimitRateDPO::getUbalanceOvertime)
|
||||||
.sum();
|
.sum();
|
||||||
comAssess.setQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - (devTime + freqTime + thdTime + pltTime + ubalanceTime) * 100.0 / (allTime * 5)));
|
//计算总稳态合格率
|
||||||
|
double all1 = 100 - (devTime + freqTime + thdTime + ubalanceTime) * 100.0 / (allTime * 4);
|
||||||
|
double all2 = 100 - pltTime * 100.0 / allFlickerTime;
|
||||||
|
comAssess.setQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, (all1 + all2) / 2.0));
|
||||||
comAssess.setVDevQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - devTime * 100.0 / allTime));
|
comAssess.setVDevQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - devTime * 100.0 / allTime));
|
||||||
comAssess.setFreqQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - freqTime * 100.0 / allTime));
|
comAssess.setFreqQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - freqTime * 100.0 / allTime));
|
||||||
comAssess.setHarmQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - thdTime * 100.0 / allTime));
|
comAssess.setHarmQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - thdTime * 100.0 / allTime));
|
||||||
comAssess.setFlickerQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - pltTime * 100.0 / allTime));
|
comAssess.setFlickerQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - pltTime * 100.0 / allFlickerTime));
|
||||||
comAssess.setUnbalanceQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - ubalanceTime * 100.0 / allTime));
|
comAssess.setUnbalanceQualifyData(allTime <= 0 ? 3.14159 : PubUtils.doubleRound(2, 100 - ubalanceTime * 100.0 / allTime));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public interface RStatLimitRateDMapper extends BaseMapper<RStatLimitRateDPO> {
|
|||||||
* @param list
|
* @param list
|
||||||
* @param startTime
|
* @param startTime
|
||||||
* @param endTime
|
* @param endTime
|
||||||
* @return
|
* @return111
|
||||||
*/
|
*/
|
||||||
List<RStatLimitRateDPO> getAssessTargetRate( @Param("ids") List<String> list,
|
List<RStatLimitRateDPO> getAssessTargetRate( @Param("ids") List<String> list,
|
||||||
@Param("statTime") String startTime,
|
@Param("statTime") String startTime,
|
||||||
|
|||||||
Reference in New Issue
Block a user