1.完善稳态指标符合性占比树形结构

2.完成终端评价和异常终端详情联调
This commit is contained in:
wr
2025-05-13 16:14:03 +08:00
parent 9eab6c28e4
commit bac81db2c7
13 changed files with 219 additions and 159 deletions

View File

@@ -18,8 +18,8 @@ import java.util.List;
@ApiModel
public class DevRunEvaluateParam {
@ApiModelProperty(name = "orgId", value = "部门id")
private String orgId;
@ApiModelProperty(name = "deptIndex", value = "部门id")
private String deptIndex;
/**
* 0-电网侧

View File

@@ -3,6 +3,7 @@ package com.njcn.device.pq.pojo.param;
import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.enums.LineFlagEnum;
import com.njcn.device.pq.enums.PowerFlagEnum;
import com.njcn.web.constant.ValidMessage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -16,6 +17,7 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
/**
* @author hongawen
@@ -30,11 +32,11 @@ public class DeviceInfoParam implements Serializable {
/**
* 统计类型
*/
@ApiModelProperty(name = "statisticalType", value = "统计类型",required = true)
@ApiModelProperty(name = "statisticalType", value = "统计类型", required = true)
@NotNull(message = "统计类型不可为空")
private SimpleDTO statisticalType;
@ApiModelProperty(name = "deptIndex", value = "部门索引",required = true)
@ApiModelProperty(name = "deptIndex", value = "部门索引", required = true)
@NotBlank(message = "部门索引不可为空")
private String deptIndex;
@@ -102,9 +104,11 @@ public class DeviceInfoParam implements Serializable {
@ApiModelProperty("监测点运行状态")
@Range(min = 0, max = 2, message = "监测点运行状态" + ValidMessage.PARAM_FORMAT_ERROR)
private Integer lineRunFlag;
/**
* 默认全部监测点
* @param deptIndex 部门索引
*
* @param deptIndex 部门索引
* @param serverName 服务名
*/
public DeviceInfoParam(String deptIndex, String serverName) {
@@ -117,7 +121,8 @@ public class DeviceInfoParam implements Serializable {
/**
* 默认全部监测点
* @param deptIndex 部门索引
*
* @param deptIndex 部门索引
* @param serverName 服务名
*/
public DeviceInfoParam(SimpleDTO statisticalType, String deptIndex, String serverName, List<SimpleDTO> scale, List<SimpleDTO> manufacturer, List<SimpleDTO> loadType) {
@@ -147,7 +152,7 @@ public class DeviceInfoParam implements Serializable {
@Data
@EqualsAndHashCode(callSuper = true)
public static class BusinessParam extends DeviceInfoParam{
public static class BusinessParam extends DeviceInfoParam {
@ApiModelProperty("开始时间")
@Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误")
@@ -168,7 +173,7 @@ public class DeviceInfoParam implements Serializable {
@Data
@EqualsAndHashCode(callSuper = true)
public static class CompareBusinessParam extends BusinessParam{
public static class CompareBusinessParam extends BusinessParam {
@ApiModelProperty("比较开始时间")
@Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误")
@@ -182,7 +187,7 @@ public class DeviceInfoParam implements Serializable {
@Data
@EqualsAndHashCode(callSuper = true)
public static class CompareLimitParam extends BusinessParam{
public static class CompareLimitParam extends BusinessParam {
@ApiModelProperty("查询条数")
@NotNull(message = " 查询条数查询条数不能为空")
@@ -192,7 +197,7 @@ public class DeviceInfoParam implements Serializable {
@Data
@EqualsAndHashCode(callSuper = true)
public static class GridDiagram extends BusinessParam{
public static class GridDiagram extends BusinessParam {
@ApiModelProperty("查询总数监测点")
private List<String> coutList;
@@ -201,7 +206,13 @@ public class DeviceInfoParam implements Serializable {
private List<String> alarmList;
@ApiModelProperty("是否是冀北电网一张图树 0:否 1:是")
private Integer type=0;
private Integer type = 0;
}
public Boolean isUserLedger() {
if (Objects.isNull(this.powerFlag) || !PowerFlagEnum.GRID_SIDE.getCode().equals(this.powerFlag)) {
return true;
}
return false;
}
}

View File

@@ -3,15 +3,9 @@ package com.njcn.device.pq.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Transient;
/**
* <p>
@@ -33,8 +27,14 @@ public class RStatIntegrityD {
@MppMultiId
private String lineIndex;
/**
* 应收数量
*/
private Integer dueTime;
/**
* 实收数量
*/
private Integer realTime;
@TableField(exist = false)

View File

@@ -19,6 +19,7 @@ public class DeviceRunEvaluateVO {
@ApiModelProperty("变电站名称")
private String subName;
@ApiModelProperty("评价")
private BigDecimal evaluate;

View File

@@ -1853,7 +1853,7 @@
AND t.id = td.id
AND dev.id = subv.pid
AND sub.id = dev.pid
<if test="powerFlag!=null ">
<if test="powerFlag!=null and powerFlag!=2">
AND td.Power_Flag =#{powerFlag}
</if>
<if test="lineIds!=null and lineIds.size()!=0">

View File

@@ -115,7 +115,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
if (CollUtil.isNotEmpty(integrityDS)) {
double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum();
double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum();
evaluateVO.setIntegrityRate(NumberUtil.round(realTime * 100 / dueTime, 2));
evaluateVO.setIntegrityRate(NumberUtil.round(Math.min(realTime * 100 / dueTime,100), 2));
} else {
evaluateVO.setIntegrityRate(new BigDecimal(0));
}
@@ -124,7 +124,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
if (CollUtil.isNotEmpty(onlineRateDS)) {
double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOnlineMin).sum();
double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlinerateD::getOfflineMin).sum();
evaluateVO.setOnLineRate(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2));
evaluateVO.setOnLineRate(NumberUtil.round(Math.min(onlineTime * 100.0 / (onlineTime + offlineTime),100), 2));
} else {
evaluateVO.setOnLineRate(new BigDecimal(0));
}
@@ -142,7 +142,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
if (allTime == 0) {
evaluateVO.setPassRate(new BigDecimal(0));
} else {
evaluateVO.setPassRate(NumberUtil.round((1 - (overTime * 1.0 / allTime)) * 100, 2));
evaluateVO.setPassRate(NumberUtil.round(Math.min((1 - (overTime * 1.0 / allTime)) * 100,100), 2));
}
} else {
evaluateVO.setPassRate(new BigDecimal(0));
@@ -180,7 +180,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
@Override
public List<DeviceRunEvaluateVO> getRunEvaluateDetail(DevRunEvaluateParam param) {
List<DeviceRunEvaluateVO> info = new ArrayList<>();
List<DevDetailVO> devDetailVOList = deptLineService.getLineDetailByDeptIdAndDevIds(param.getOrgId(), param.getPowerFlag(), param.getIds());
List<DevDetailVO> devDetailVOList = deptLineService.getLineDetailByDeptIdAndDevIds(param.getDeptIndex(), param.getPowerFlag(), param.getIds());
if (CollUtil.isNotEmpty(devDetailVOList)) {
List<RStatLimitRateDPO> limitRateList = new ArrayList<>();
List<RStatOnlinerateD> onlineRateList = new ArrayList<>();

View File

@@ -8,7 +8,6 @@ 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.biz.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.biz.enums.DeviceResponseEnum;
@@ -28,17 +27,13 @@ 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.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.IntegrityIconVO;
import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.system.pojo.enums.StatisticsEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -90,9 +85,8 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
// 判断所有数据集合状态
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
Map<String, UserLedgerVO> userLedgerVOMap;
if (Objects.isNull(lineIntegrityDataParam.getPowerFlag()) || !PowerFlagEnum.GRID_SIDE.getCode().equals(lineIntegrityDataParam.getPowerFlag())) {
if (lineIntegrityDataParam.isUserLedger()) {
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
} else {