1.在线监测详情接口

2.在线监测查询接口调整
This commit is contained in:
xy
2024-07-09 10:15:23 +08:00
parent 6ec0ef54e9
commit 1af8fcc72f
15 changed files with 599 additions and 42 deletions

View File

@@ -41,6 +41,7 @@ public class DevDetail {
private Integer comFlag;
@ApiModelProperty("定检时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate nextTimeCheck;
}

View File

@@ -50,4 +50,7 @@ public class ReportLineInfoVo implements Serializable {
@ApiModelProperty("超标天数")
private Integer overDays;
@ApiModelProperty("电网标志0-电网侧1-非电网侧)")
private Integer powerFlag;
}

View File

@@ -1701,7 +1701,8 @@
pd.IP ip,
pld.Short_Capacity shortCapacity,
pld.Dev_Capacity devCapacity,
pld.Deal_Capacity dealCapacity
pld.Deal_Capacity dealCapacity,
pld.Power_Flag powerFlag
from
pq_line pl
left join pq_line_detail pld on pl.Id = pld.Id

View File

@@ -1,7 +1,11 @@
package com.njcn.harmonic.api;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
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.harmonic.api.fallback.HarmDataFeignClientFallbackFactory;
import com.njcn.harmonic.api.fallback.RStatLimitRateDFeignClientFallbackFactory;
import com.njcn.harmonic.pojo.param.HistoryHarmParam;
@@ -11,9 +15,13 @@ import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import com.njcn.influx.pojo.dto.HarmHistoryDataDTO;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -35,4 +43,6 @@ public interface RStatLimitRateDClient {
@PostMapping("/monitorOverLimitDays")
HttpResult<List<RStatLimitTargetVO>> monitorOverLimitDays(@RequestBody RStatLimitQueryParam rStatLimitQueryParam);
@PostMapping("/getOverData")
HttpResult<List<RStatLimitRateDPO>> getOverData(@RequestParam("lineId") String lineId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestParam("type") Integer type);
}

View File

@@ -56,6 +56,12 @@ public class RStatLimitRateDFeignClientFallbackFactory implements FallbackFactor
log.error("{}异常,降级处理,异常为:{}", "按日期查询监测点各指标越限天数", throwable.toString());
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}
@Override
public HttpResult<List<RStatLimitRateDPO>> getOverData(String lineId, String startTime, String endTime, Integer type) {
log.error("{}异常,降级处理,异常为:{}", "查询单监测点超标数据", throwable.toString());
return new HttpResult<>(CommonResponseEnum.FAIL.getCode(),CommonResponseEnum.FAIL.getMessage());
}
};
}
}

View File

@@ -12,12 +12,11 @@ import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import com.njcn.harmonic.service.majornetwork.RStatLimitService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -64,4 +63,19 @@ public class RStatLimitController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@PostMapping("/getOverData")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("查询单监测点超标数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "lineId", value = "监测点id"),
@ApiImplicitParam(name = "startTime", value = "开始时间"),
@ApiImplicitParam(name = "endTime", value = "结束时间"),
@ApiImplicitParam(name = "type", value = "指标"),
})
public HttpResult<List<RStatLimitRateDPO>> getOverData(@RequestParam("lineId") String lineId, @RequestParam("startTime") String startTime, @RequestParam("endTime") String endTime, @RequestParam("type") Integer type) {
String methodDescribe = getMethodDescribe("getOverData");
List<RStatLimitRateDPO> result = rStatLimitService.getOverData(lineId,startTime,endTime,type);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -5,6 +5,7 @@ import com.njcn.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -43,4 +44,6 @@ public interface RStatLimitService {
* @return
*/
List<GridDiagramVO.RunData> getGridDiagramRunData(DeviceInfoParam.BusinessParam param);
List<RStatLimitRateDPO> getOverData(String lineId, String startTime, String endTime, Integer type);
}

View File

@@ -2,10 +2,12 @@ package com.njcn.harmonic.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.func.Func;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
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.pojo.dto.SimpleDTO;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO;
@@ -21,6 +23,7 @@ import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
import com.njcn.harmonic.mapper.RStatLimitRateDMapper;
import com.njcn.harmonic.mapper.RStatLimitTargetDMapper;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpVThd;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
@@ -133,7 +136,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
for (GeneralDeviceDTO dto : topList) {
lineData=new GridDiagramVO.LineData();
lineData.setOrgId(dto.getIndex());
lineData.setOrgName(dto.getName()+"\n("+dto.getLineIndexes().size()+")");
lineData.setOrgName(dto.getName()+"("+dto.getLineIndexes().size()+")");
onLineAndIntegrity(dto.getLineIndexes(), integrityList, dto.getDeviceIndexes(), onlineRateList,limitTargetList, lineData);
info.add(lineData);
}
@@ -142,7 +145,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
List<String> otherLineIds = otherList.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
lineData=new GridDiagramVO.LineData();
lineData.setOrgId("123456");
lineData.setOrgName("其他\n("+otherLineIds.size()+")");
lineData.setOrgName("其他("+otherLineIds.size()+")");
onLineAndIntegrity(otherLineIds, integrityList, otherDevIds, onlineRateList,limitTargetList, lineData);
info.add(lineData);
}
@@ -308,6 +311,94 @@ public class RStatLimitServiceImpl implements RStatLimitService {
return info;
}
@Override
public List<RStatLimitRateDPO> getOverData(String lineId, String startTime, String endTime, Integer type) {
QueryWrapper<RStatLimitRateDPO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda()
.eq(RStatLimitRateDPO::getLineId,lineId)
.between(RStatLimitRateDPO::getTime,startTime,endTime)
.groupBy(RStatLimitRateDPO::getTime);
//频率偏差
if (type == 1) {
queryWrapper.select("time_id time,max(freq_dev_overtime) freq_dev_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getFreqDevOvertime,0);
}
//电压偏差
else if (type == 2) {
queryWrapper.select("time_id time,max(voltage_dev_overtime) voltage_dev_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getVoltageDevOvertime,0);
}
//长时闪变
else if (type == 3) {
queryWrapper.select("time_id time,max(flicker_overtime) flicker_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getFlickerOvertime,0);
}
//电压总谐波畸变率
else if (type == 4) {
queryWrapper.select("time_id time,max(uaberrance_overtime) uaberrance_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getUaberranceOvertime,0);
}
//负序电压不平衡度
else if (type == 5) {
queryWrapper.select("time_id time,max(ubalance_overtime) ubalance_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getUbalanceOvertime,0);
}
//负序电流
else if (type == 6) {
queryWrapper.select("time_id time,max(i_neg_overtime) i_neg_overtime");
queryWrapper.lambda().gt(RStatLimitRateDPO::getINegOvertime,0);
}
//谐波电压含有率
else if (type == 7) {
StringBuilder selectSql = new StringBuilder();
StringBuilder havingSql = new StringBuilder();
for (int i = 2; i <=25 ; i++) {
selectSql.append("max(uharm_").append(i).append("_overtime) uharm_").append(i).append("_overtime,");
if (i == 25) {
havingSql.append("uharm_").append(i).append("_overtime");
} else {
havingSql.append("uharm_").append(i).append("_overtime + ");
}
}
selectSql.append("time_id time");
havingSql = new StringBuilder("sum(" + havingSql + ")");
queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0);
}
//谐波电流
else if (type == 8) {
StringBuilder selectSql = new StringBuilder();
StringBuilder havingSql = new StringBuilder();
for (int i = 2; i <=25 ; i++) {
selectSql.append("max(iharm_").append(i).append("_overtime) iharm_").append(i).append("_overtime,");
if (i == 25) {
havingSql.append("iharm_").append(i).append("_overtime");
} else {
havingSql.append("iharm_").append(i).append("_overtime + ");
}
}
selectSql.append("time_id time");
havingSql = new StringBuilder("sum(" + havingSql + ")");
queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0);
}
//间谐波电压
else if (type == 9) {
StringBuilder selectSql = new StringBuilder();
StringBuilder havingSql = new StringBuilder();
for (int i = 1; i <=16 ; i++) {
selectSql.append("max(inuharm_").append(i).append("_overtime) inuharm_").append(i).append("_overtime,");
if (i == 16) {
havingSql.append("inuharm_").append(i).append("_overtime");
} else {
havingSql.append("inuharm_").append(i).append("_overtime + ");
}
}
selectSql.append("time_id time");
havingSql = new StringBuilder("sum(" + havingSql + ")");
queryWrapper.select(selectSql.toString()).having(havingSql.toString(),0);
}
return rStatLimitRateDMapper.selectList(queryWrapper);
}
private void onLineAndIntegrity(List<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlinerateVO> onlineRateByDevIds,List<RStatLimitTargetDPO> limitTargetList, GridDiagramVO.LineData lineData) {
//监测完整率
List<RStatIntegrityD> integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList());

View File

@@ -3,12 +3,12 @@ package com.njcn.supervision.pojo.po.device;
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.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
* 终端周期检测表
@@ -32,13 +32,13 @@ public class CheckDevice extends BaseEntity implements Serializable {
/**
* 装置id
*/
@MppMultiId("device_id")
@MppMultiId(value = "device_id")
private String deviceId;
/**
* 原来定检时间
*/
@MppMultiId("check_time")
@MppMultiId(value = "check_time")
private LocalDate checkTime;
/**
@@ -74,7 +74,7 @@ public class CheckDevice extends BaseEntity implements Serializable {
/**
* 状态 0未处理 1已处理
*/
@MppMultiId("state")
@MppMultiId(value = "state")
private Integer state;
/**

View File

@@ -0,0 +1,27 @@
package com.njcn.supervision.pojo.vo.device;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* <p>
* 在线监测监测点越限详情
* </p>
*
* @author xy
* @since 2024-07-05
*/
@Data
public class LineLimitDetailVo implements Serializable {
@ApiModelProperty("日期")
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate time;
@ApiModelProperty("越限详情")
private String overLimitInfo;
}

View File

@@ -60,7 +60,7 @@
</dependency>
</dependencies>
<build>
<finalName>supervision-boot</finalName>
<finalName>supervisionboot</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

View File

@@ -8,6 +8,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.supervision.pojo.param.device.OnlineParam;
import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo;
import com.njcn.supervision.pojo.vo.device.OnlineVo;
import com.njcn.supervision.service.device.ILineWarningService;
import com.njcn.web.controller.BaseController;
@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <p>
@@ -87,10 +89,10 @@ public class LineWarningController extends BaseController {
@PostMapping("/overLimitDetail")
@ApiOperation("查看越限详情")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<String> getOverLimitDetail(@RequestBody @Validated OnlineParam.DetailParam param) {
public HttpResult<List<LineLimitDetailVo>> getOverLimitDetail(@RequestBody @Validated OnlineParam.DetailParam param) {
String methodDescribe = getMethodDescribe("getOverLimitDetail");
lineWarningService.getOverLimitDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "success", methodDescribe);
List<LineLimitDetailVo> result = lineWarningService.getOverLimitDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
}

View File

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.supervision.pojo.param.device.OnlineParam;
import com.njcn.supervision.pojo.po.device.LineWarning;
import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo;
import com.njcn.supervision.pojo.vo.device.OnlineVo;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <p>
@@ -47,6 +49,6 @@ public interface ILineWarningService extends IService<LineWarning> {
* @param param
* @return
*/
void getOverLimitDetail(OnlineParam.DetailParam param);
List<LineLimitDetailVo> getOverLimitDetail(OnlineParam.DetailParam param);
}

View File

@@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.bpm.api.BpmProcessFeignClient;
@@ -27,9 +26,6 @@ import com.njcn.supervision.enums.SupervisionKeyEnum;
import com.njcn.supervision.mapper.device.CheckDeviceMapper;
import com.njcn.supervision.pojo.param.device.CheckDeviceParam;
import com.njcn.supervision.pojo.po.device.CheckDevice;
import com.njcn.supervision.pojo.po.device.QuitRunningDevice;
import com.njcn.supervision.pojo.po.survey.SurveyTest;
import com.njcn.supervision.pojo.po.user.UserReportNormalPO;
import com.njcn.supervision.pojo.vo.device.CheckDeviceVo;
import com.njcn.supervision.service.device.ICheckDeviceService;
import com.njcn.supervision.utils.InstanceUtil;

View File

@@ -10,10 +10,13 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.pojo.enums.common.ServerEnum;
import com.njcn.common.utils.HarmonicTimesUtil;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.api.DeptLineFeignClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.po.DeptLine;
@@ -21,15 +24,21 @@ import com.njcn.device.pq.pojo.vo.LineDetailVO;
import com.njcn.device.pq.pojo.vo.ReportLineInfoVo;
import com.njcn.harmonic.api.RStatLimitRateDClient;
import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
import com.njcn.harmonic.pojo.vo.RStatLimitTargetVO;
import com.njcn.harmonic.utils.WordUtil2;
import com.njcn.influx.constant.InfluxDbSqlConstant;
import com.njcn.influx.imapper.*;
import com.njcn.influx.pojo.po.*;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.supervision.enums.ProblemTypeEnum;
import com.njcn.supervision.mapper.device.LineWarningMapper;
import com.njcn.supervision.pojo.param.device.OnlineParam;
import com.njcn.supervision.pojo.po.device.LineWarning;
import com.njcn.supervision.pojo.vo.device.LineLimitDetailVo;
import com.njcn.supervision.pojo.vo.device.OnlineVo;
import com.njcn.supervision.service.device.ILineWarningService;
import com.njcn.supervision.service.leaflet.IWarningLeafletService;
@@ -76,6 +85,12 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
private final DeptFeignClient deptFeignClient;
private final WordUtil2 wordUtil2;
private final DataVMapper dataVMapper;
private final IDataIMapper dataIMapper;
private final DataHarmRateVMapper dataHarmRateVMapper;
private final DataInHarmVMapper dataInHarmVMapper;
private final DataPltMapper dataPltMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public void addLineWarning() {
@@ -135,8 +150,8 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
@Transactional(rollbackFor = Exception.class)
public void addHeBeiNorthLineWarning(String startTime, String endTime) {
List<LineWarning> result = new ArrayList<>();
//获取指标集合(8个指标)
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.INDICATOR_TYPE.getCode()).getData();
//获取指标集合(10个指标)
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
Map<String, DictData> targetMap = dataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity()));
//获取监测点和部门表关系
List<DeptLine> deptLines = deptLineFeignClient.getAllData().getData();
@@ -152,22 +167,26 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
limitTarget.forEach(item->{
String deptId = Objects.isNull(deptLineMap.get(item.getLineId()))?null:deptLineMap.get(item.getLineId()).get(0).getId();
//频率偏差
LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PLPC_ENUM.getCode()).getId(),item.getFreqDevOvertime());
LineWarning l1 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FREQUENCY_DEV.getCode()).getId(),item.getFreqDevOvertime());
//电压偏差
LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.DYPC_ENUM.getCode()).getId(),item.getVoltageDevOvertime());
LineWarning l2 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.VOLTAGE_DEV.getCode()).getId(),item.getVoltageDevOvertime());
//长时闪变
LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.CSSB_ENUM.getCode()).getId(),item.getFlickerOvertime());
LineWarning l3 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FLICKER.getCode()).getId(),item.getFlickerOvertime());
//谐波电压
LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDY_ENUM.getCode()).getId(),item.getUharmOvertime());
LineWarning l4 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId(),item.getUharmOvertime());
//谐波电流
LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.XBDL_ENUM.getCode()).getId(),item.getIharmOvertime());
LineWarning l5 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId(),item.getIharmOvertime());
//间谐波电压
LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.JXBDY_ENUM.getCode()).getId(),item.getInuharmOvertime());
LineWarning l6 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.INTERHARMONIC_VOLTAGE.getCode()).getId(),item.getInuharmOvertime());
//负序电压不平衡度
LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.SXDYBPHD_ENUM.getCode()).getId(),item.getUbalanceOvertime());
LineWarning l7 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId(),item.getUbalanceOvertime());
//负序电流
LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.FXDL_ENUM.getCode()).getId(),item.getINegOvertime());
result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8));
LineWarning l8 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId(),item.getINegOvertime());
//电压总谐波畸变率
LineWarning l9 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.THD_V.getCode()).getId(),item.getUaberranceOvertime());
//总稳态指标
LineWarning l10 = overData(firstDayOfMonth,item.getLineId(),deptId,targetMap.get(DicDataEnum.TOTAL_INDICATOR.getCode()).getId(),item.getAllOvertime());
result.addAll(Arrays.asList(l1,l2,l3,l4,l5,l6,l7,l8,l9,l10));
});
}
//将装置无数据的统计入库 按运维要求,判断装置的最新数据不是当天,则认为装置无数据
@@ -238,10 +257,10 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
//获取无数据监测点集合
List<ReportLineInfoVo> list1 = getReportLineInfo(true,param.getIdList(),null,param.getSearchBeginTime(),param.getSearchEndTime(),param.getDeptId(),allLineWarnings);
//获取谐波电压超标监测点集合
String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDY_ENUM.getCode()).getData().getId();
String vCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getData().getId();
List<ReportLineInfoVo> list2 = getReportLineInfo(false,param.getIdList(),vCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings);
//获取谐波电流超标监测点集合
String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.XBDL_ENUM.getCode()).getData().getId();
String iCode = dicDataFeignClient.getDicDataByCode(DicDataEnum.HARMONIC_CURRENT.getCode()).getData().getId();
List<ReportLineInfoVo> list3 = getReportLineInfo(false,param.getIdList(),iCode,param.getSearchBeginTime(),param.getSearchEndTime(),null,allLineWarnings);
try {
Map<String, Object> dataMap = new HashMap<String, Object>();
@@ -250,7 +269,6 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
dataMap.put("${deptName}", param.getDeptName());
dataMap.put("${startTime}", new SimpleDateFormat(DatePattern.CHINESE_DATE_PATTERN).format(new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN).parse(param.getSearchBeginTime())));
dataMap.put("${endTime}", new SimpleDateFormat(DatePattern.CHINESE_DATE_PATTERN).format(new SimpleDateFormat(DatePattern.NORM_DATE_PATTERN).parse(param.getSearchEndTime())));
dataMap.put("${noData}", CollUtil.isEmpty(list1)?"0":String.valueOf(list1.size()));
dataMap.put("${harmonicV}", CollUtil.isEmpty(list2)?"0":String.valueOf(list2.size()));
dataMap.put("${harmonicI}", CollUtil.isEmpty(list3)?"0":String.valueOf(list3.size()));
dataMap.put("${alarmDay}", String.valueOf(param.getAlarmThreshold()));
@@ -259,8 +277,13 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
List<String[]> dataList1 = new ArrayList<String[]>(),dataList2 = new ArrayList<String[]>(),dataList3 = new ArrayList<String[]>();
if (CollUtil.isNotEmpty(list1)) {
list1.forEach(item->{
if (Objects.isNull(param.getLineType()) || Objects.equals("",param.getLineType())) {
dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()});
} else if (Integer.parseInt(param.getLineType()) == item.getPowerFlag()) {
dataList1.add(new String[]{deptName,item.getLineVoltage(),item.getLineName(),item.getSubName(),item.getObjName(),item.getSubVName(),item.getUpdateTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)),item.getIp()});
}
});
dataMap.put("${noData}", CollUtil.isEmpty(dataList1)?"0":String.valueOf(dataList1.size()));
}
if (CollUtil.isNotEmpty(list2)) {
list2.forEach(item->{
@@ -272,6 +295,7 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
dataList3.add(new String[]{deptName,item.getLineName(),item.getSubName(),item.getObjName(),String.valueOf(item.getOverDays()),String.valueOf(item.getShortCapacity()),String.valueOf(item.getDevCapacity()),String.valueOf(item.getDealCapacity())});
});
}
List<List<String[]>> tableList = Arrays.asList(dataList1,dataList2,dataList3);
InputStream inputStream = wordUtil2.getReportFile(inputUrl,dataMap,tableList);
//上传文件服务器
@@ -311,12 +335,252 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
}
@Override
public void getOverLimitDetail(OnlineParam.DetailParam param) {
public List<LineLimitDetailVo> getOverLimitDetail(OnlineParam.DetailParam param) {
String targetCode = dicDataFeignClient.getDicDataById(param.getTargetId()).getData().getCode();
//获取监测点统计间隔
Integer timeInterval = commTerminalGeneralClient.getMonitorDetail(param.getLineId()).getData().getInterval();
//获取限值
Overlimit overlimit = commTerminalGeneralClient.getOverLimitData(param.getLineId()).getData();
//处理数据
return chanelTarget(param,overlimit,timeInterval,targetCode);
}
//指标数据处理
public List<LineLimitDetailVo> chanelTarget(OnlineParam.DetailParam param, Overlimit overlimit, Integer timeInterval, String targetCode) {
List<LineLimitDetailVo> result = new ArrayList<>(),finalList = new ArrayList<>();
//频率偏差
if (Objects.equals(targetCode,DicDataEnum.FREQUENCY_DEV.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),1).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getFreqDev(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getFreqDev();
channelEachData(item,maxData>0?overlimit.getFreqDev():-overlimit.getFreqDev(),"getFreqDev",result,DicDataEnum.FREQUENCY_DEV.getName(),timeInterval,maxData);
});
}
}
//电压偏差
if (Objects.equals(targetCode,DicDataEnum.VOLTAGE_DEV.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),2).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
Float overLimit;
Double maxData;
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
List<DataV> voltageList = getVoltageDev(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
);
List<Double> voltage = voltageList.stream().map(DataV::getVuDev).collect(Collectors.toList());
if (Math.abs(voltage.get(0)) >= Math.abs(voltage.get(1))){
overLimit = overlimit.getUvoltageDev();
maxData = voltage.get(0);
} else {
overLimit = overlimit.getVoltageDev();
maxData = voltage.get(1);
}
channelEachData(item,overLimit,"getVoltageDev",result,DicDataEnum.VOLTAGE_DEV.getName(),timeInterval,maxData);
});
}
}
//长时闪变
if (Objects.equals(targetCode,DicDataEnum.FLICKER.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),3).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getFlicker(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getPlt();
channelEachData(item,overlimit.getFlicker(),"getFlicker",result,DicDataEnum.FLICKER.getName(),timeInterval,maxData);
});
}
}
//电压总谐波畸变率
if (Objects.equals(targetCode,DicDataEnum.THD_V.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),4).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getVThd(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getVThd();
channelEachData(item,overlimit.getUaberrance(),"getUaberrance",result,DicDataEnum.THD_V.getName(),timeInterval,maxData);
});
}
}
//谐波电压
if (Objects.equals(targetCode,DicDataEnum.HARMONIC_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
//电压总谐波畸变率
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),4).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getVThd(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getVThd();
channelEachData(item,overlimit.getUaberrance(),"getUaberrance",result,DicDataEnum.THD_V.getName(),timeInterval,maxData);
});
}
//谐波电压含有率2~25次
List<RStatLimitRateDPO> list2 = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),7).getData();
if (CollUtil.isNotEmpty(list2)) {
list2.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
DataHarmRateV dataHarmRateV = getDataHarmRateV(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59").get(0);
channelHarmonicData(dataHarmRateV,null,null,item,overlimit,result,"getUharm",DicDataEnum.HARMONIC_VOLTAGE.getName(),timeInterval,2,25);
});
}
}
//谐波电流
if (Objects.equals(targetCode,DicDataEnum.HARMONIC_CURRENT.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),8).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
DataI dataI = getDataI(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59").get(0);
channelHarmonicData(null,dataI,null,item,overlimit,result,"getIharm",DicDataEnum.HARMONIC_CURRENT.getName(),timeInterval,2,25);
});
}
}
//间谐波电压
if (Objects.equals(targetCode,DicDataEnum.INTERHARMONIC_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),9).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
DataInHarmV dataInHarmV = getDataInHarmV(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59").get(0);
channelHarmonicData(null,null,dataInHarmV,item,overlimit,result,"getInuharm",DicDataEnum.INTERHARMONIC_VOLTAGE.getName(),timeInterval,1,16);
});
}
}
//负序电压不平衡度
if (Objects.equals(targetCode,DicDataEnum.PHASE_VOLTAGE.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),5).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getUnbalance(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getVUnbalance();
channelEachData(item,overlimit.getUbalance(),"getUbalance",result,DicDataEnum.PHASE_VOLTAGE.getName(),timeInterval,maxData);
});
}
}
//负序电流
if (Objects.equals(targetCode,DicDataEnum.NEG_CURRENT.getCode()) || Objects.equals(targetCode,DicDataEnum.TOTAL_INDICATOR.getCode())) {
List<RStatLimitRateDPO> list = limitRateDClient.getOverData(param.getLineId(),param.getSearchBeginTime(),param.getSearchEndTime(),6).getData();
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
String time = item.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
double maxData = getINeg(param.getLineId()
, time + " 00:00:00"
, time + " 23:59:59"
).get(0).getINeg();
channelEachData(item,overlimit.getINeg(),"getINeg",result,DicDataEnum.NEG_CURRENT.getName(),timeInterval,maxData);
});
}
}
if (CollUtil.isNotEmpty(result)) {
Map<LocalDate,List<LineLimitDetailVo>> map = result.stream().collect(Collectors.groupingBy(LineLimitDetailVo::getTime,LinkedHashMap::new,Collectors.toList()));
map.forEach((k,v)->{
StringBuilder describe = new StringBuilder();
LineLimitDetailVo lineLimitDetailVo = new LineLimitDetailVo();
lineLimitDetailVo.setTime(k);
v.forEach(item->{
describe.append(item.getOverLimitInfo());
});
lineLimitDetailVo.setOverLimitInfo(describe.toString());
finalList.add(lineLimitDetailVo);
});
}
return finalList;
}
//处理单指标
public void channelEachData(RStatLimitRateDPO dpo, float limit, String getColum, List<LineLimitDetailVo> result, String targetName, Integer timeInterval, double maxData) {
try {
Class<?> clazz = dpo.getClass();
String methodName = getColum + "Overtime";
Method method;
method = clazz.getMethod(methodName);
int value = (int) method.invoke(dpo);
LineLimitDetailVo vo = new LineLimitDetailVo();
vo.setTime(dpo.getTime());
vo.setOverLimitInfo(targetName + "最大幅值:" + PubUtils.doubleRound(2,maxData) + ",限值:" + limit + ",超标时间:" + value * timeInterval + "分钟;");
result.add(vo);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//处理谐波数据 谐波电压、谐波电流、间谐波电压
public void channelHarmonicData(DataHarmRateV dataHarmRateV, DataI dataI, DataInHarmV dataInHarmV, RStatLimitRateDPO dpo, Overlimit overlimit, List<LineLimitDetailVo> result, String getColum, String targetName, Integer timeInterval, Integer startTimes, Integer endTimes) {
LinkedHashMap<Integer,Integer> overMap = new LinkedHashMap<>();
StringBuilder describe = new StringBuilder();
LineLimitDetailVo vo = new LineLimitDetailVo();
vo.setTime(dpo.getTime());
//查看具体哪几次超标
Class<?> clazz = dpo.getClass();
for (int i = startTimes; i <= endTimes; i++) {
String methodName = getColum + i + "Overtime";
try {
Method method = clazz.getMethod(methodName);
int value = (int) method.invoke(dpo);
if (value > 0) {
overMap.put(i,value);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Class<?> clazz2 = null;
String targetName2 = null;
double value2 = 0.0;
if (Objects.nonNull(dataHarmRateV)) {
clazz2 = dataHarmRateV.getClass();
targetName2 = "getV";
} else if (Objects.nonNull(dataI)) {
clazz2 = dataI.getClass();
targetName2 = "getI";
} else if (Objects.nonNull(dataInHarmV)) {
clazz2 = dataInHarmV.getClass();
targetName2 = "getV";
}
for(Integer key:overMap.keySet()){
int value = overMap.get(key);
String methodName = targetName2 + key;
Method method;
try {
method = clazz2.getMethod(methodName);
if (Objects.nonNull(dataHarmRateV)) {
value2 = (double) method.invoke(dataHarmRateV);
} else if (Objects.nonNull(dataI)) {
value2 = (double) method.invoke(dataI);
} else if (Objects.nonNull(dataInHarmV)) {
value2 = (double) method.invoke(dataInHarmV);
}
describe.append(key).append("").append(targetName).append("CP95值最大幅值:").append(PubUtils.doubleRound(2,value2)).append("%,限值:").append(getOverLimitData(overlimit, getColum, key)).append("%,超标时间:").append(value * timeInterval).append("分钟;");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
vo.setOverLimitInfo(describe.toString().trim());
result.add(vo);
}
public List<ReportLineInfoVo> getReportLineInfo(boolean type, List<String> idList, String codeId, String startTime, String endTime, String deptId,List<LineWarning> allLineWarnings) {
@@ -501,4 +765,141 @@ public class LineWarningServiceImpl extends MppServiceImpl<LineWarningMapper, Li
updateList.add(line);
}
}
private float getOverLimitData(Overlimit overlimit, String targetName, Integer times) {
float result;
Class<?> clazz = overlimit.getClass();
String methodName = targetName + times;
try {
Method method = clazz.getMethod(methodName);
result = (float) method.invoke(overlimit);
} catch (Exception e) {
throw new RuntimeException(e);
}
return result;
}
/**
* 获取频率偏差-日最大值-最大值
*/
public List<DataV> getFreqDev(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper2 = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper2.eq(DataV::getLineId, lineIndex)
.eq(DataV::getValueType, InfluxDbSqlConstant.MAX)
.eq(DataV::getPhasicType,"T")
.max(DataV::getFreqDev)
.between(DataV::getTime, startTime, endTime);
return dataVMapper.getStatisticsByWraper(influxQueryWrapper2);
}
/**
* 获取电压偏差-日最大值&&日最小值 日最大值的最大值 日最小值的最小值
*/
public List<DataV> getVoltageDev(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
.eq(DataV::getValueType, InfluxDbSqlConstant.MIN)
.regular(DataV::getPhasicType,Arrays.asList("A","B","C"))
.min(DataV::getVuDev)
.between(DataV::getTime, startTime, endTime);
List<DataV> result = new ArrayList<>(dataVMapper.getStatisticsByWraper(influxQueryWrapper));
InfluxQueryWrapper influxQueryWrapper2 = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper2.eq(DataV::getLineId, lineIndex)
.eq(DataV::getValueType, InfluxDbSqlConstant.MAX)
.regular(DataV::getPhasicType,Arrays.asList("A","B","C"))
.max(DataV::getVuDev)
.between(DataV::getTime, startTime, endTime);
result.addAll(dataVMapper.getStatisticsByWraper(influxQueryWrapper2));
return result;
}
/**
* 获取长时闪变-日最大值-最大值
*/
public List<DataPlt> getFlicker(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
influxQueryWrapper.eq(DataPlt::getLineId, lineIndex)
.regular(DataPlt::getPhaseType,Arrays.asList("A","B","C"))
.max(DataPlt::getPlt)
.between(DataPlt::getTime, startTime, endTime);
return dataPltMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取电压总谐波畸变率-日CP95-最大值
*/
public List<DataV> getVThd(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
.eq(DataV::getValueType, InfluxDbSqlConstant.CP95)
.regular(DataV::getPhasicType,Arrays.asList("A","B","C"))
.max(DataV::getVThd)
.between(DataV::getTime, startTime, endTime);
return dataVMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取负序电压不平衡度-日最大值-最大值
*/
public List<DataV> getUnbalance(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
influxQueryWrapper.eq(DataV::getLineId, lineIndex)
.eq(DataV::getValueType, InfluxDbSqlConstant.MAX)
.eq(DataV::getPhasicType,"T")
.max(DataV::getVUnbalance)
.between(DataV::getTime, startTime, endTime);
return dataVMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取负序电流-日最大值-最大值
*/
public List<DataI> getINeg(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
influxQueryWrapper.eq(DataI::getLineId, lineIndex)
.eq(DataI::getValueType, InfluxDbSqlConstant.MAX)
.eq(DataI::getPhaseType,"T")
.max(DataI::getINeg)
.between(DataI::getTime, startTime, endTime);
return dataIMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取谐波电压含有率 2~25次数据
*/
public List<DataHarmRateV> getDataHarmRateV(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmRateV.class);
influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.V,"", HarmonicTimesUtil.harmonicTimesList(2,25,1));
influxQueryWrapper.eq(DataHarmRateV::getLineId, lineIndex)
.eq(DataHarmRateV::getValueType, InfluxDbSqlConstant.CP95)
.regular(DataHarmRateV::getPhaseType,Arrays.asList("A","B","C"))
.between(DataHarmRateV::getTime, startTime, endTime);
return dataHarmRateVMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取谐波电流含有率 2~25次数据
*/
public List<DataI> getDataI(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.I,"", HarmonicTimesUtil.harmonicTimesList(2,25,1));
influxQueryWrapper.eq(DataI::getLineId, lineIndex)
.eq(DataI::getValueType, InfluxDbSqlConstant.CP95)
.regular(DataI::getPhaseType,Arrays.asList("A","B","C"))
.between(DataI::getTime, startTime, endTime);
return dataIMapper.getStatisticsByWraper(influxQueryWrapper);
}
/**
* 获取间谐波电压含有率 2~25次数据
*/
public List<DataInHarmV> getDataInHarmV(String lineIndex, String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInHarmV.class);
influxQueryWrapper.maxSamePrefixAndSuffix(InfluxDbSqlConstant.V,"", HarmonicTimesUtil.harmonicTimesList(1,16,1));
influxQueryWrapper.eq(DataInHarmV::getLineId, lineIndex)
.eq(DataInHarmV::getValueType, InfluxDbSqlConstant.CP95)
.regular(DataInHarmV::getPhaseType,Arrays.asList("A","B","C"))
.between(DataInHarmV::getTime, startTime, endTime);
return dataInHarmVMapper.getStatisticsByWraper(influxQueryWrapper);
}
}