1.解决device模块Swagger无法显示bug

2.修改监测点评价,数据异常,指标数据质量算法兼容修改
This commit is contained in:
wr
2023-09-22 16:13:16 +08:00
parent 66322e6c39
commit c686694c74
32 changed files with 502 additions and 268 deletions

View File

@@ -5,6 +5,8 @@ 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.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.RStatAbnormalDService;
@@ -38,7 +40,7 @@ import java.util.List;
@Api(tags = "监测点异常_日统计")
@AllArgsConstructor
public class RMStatAbnormalDController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final RStatAbnormalDService rStatAbnormalDService;
@@ -47,17 +49,23 @@ public class RMStatAbnormalDController extends BaseController {
@PostMapping("handlerMonitorAbnormal")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorAbnormal(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorAbnormal开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorAbnormal");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (jobParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = jobParam.getLineIds ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
if (jobParam.getRepairFlag()){
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(),jobParam.getEndTime());
for (String item : timeRange) {
log.info(item+"-->开始执行");
rStatAbnormalDService.handlerMonitorAbnormal(indexLists,item);
}
} else {
rStatAbnormalDService.handlerMonitorAbnormal (indexLists,jobParam.getBeginTime());
}
rStatAbnormalDService.handlerMonitorAbnormal (indexLists,jobParam.getDataDate ());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -5,7 +5,8 @@ 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.api.LineFeignClient;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService;
import com.njcn.web.controller.BaseController;
@@ -21,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
@@ -38,26 +38,36 @@ import java.util.List;
@Api(tags = "监测点评价_日统计")
@AllArgsConstructor
public class RMpMonitorEvaluateDController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
@ApiOperation("监测点评价_日统计(MySQL库)")
@ApiImplicitParam(value = "jobParam",name = "jobParam",required = true)
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
@PostMapping("handlerMonitorEvaluate")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorEvaluate(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorEvaluate开始执行");
public HttpResult<Boolean> handlerMonitorEvaluate(@RequestBody LineParam jobParam) {
log.info(LocalDateTime.now() + "handlerMonitorEvaluate开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorEvaluate");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (jobParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = jobParam.getLineIds ();
String startTime,endTime;
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
if (jobParam.getRepairFlag()){
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(),jobParam.getEndTime());
for (String item : timeRange) {
log.info(item+"-->开始执行");
startTime = item+" "+"00:00:00";
endTime = item+" "+"23:59:59";
rMpMonitorEvaluateDService.dayDataJobHandler(indexLists,startTime, endTime);
}
} else {
rMpMonitorEvaluateDService.dayDataJobHandler(indexLists, jobParam.getBeginTime(), jobParam.getEndTime());
}
rMpMonitorEvaluateDService.dayDataJobHandler (indexLists,jobParam.getDataDate ());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -5,7 +5,8 @@ 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.api.LineFeignClient;
import com.njcn.common.utils.NjcnDateUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
@@ -22,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
@@ -39,46 +39,50 @@ import java.util.List;
@Api(tags = "监测点数据质量")
@AllArgsConstructor
public class ROperatingMonitorController extends BaseController {
private final LineFeignClient lineFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
private final ROperatingMonitorService rOperatingMonitorService;
private final ROperatingMonitorMService rOperatingMonitorMService;
private final ROperatingMonitorMService rOperatingMonitorMService;
@ApiOperation("监测点数据质量_日统计(MySQL库)")
@ApiImplicitParam(value = "jobParam",name = "jobParam",required = true)
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
@PostMapping("handlerMonitorOperatingD")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorOperatingD(@RequestBody LineParam jobParam ){
log.info(LocalDateTime.now()+"handlerMonitorOperatingD开始执行");
public HttpResult<Boolean> handlerMonitorOperatingD(@RequestBody LineParam jobParam) {
log.info(LocalDateTime.now() + "handlerMonitorOperatingD开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingD");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (jobParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = jobParam.getLineIds ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
if (jobParam.getRepairFlag()) {
List<String> timeRange = NjcnDateUtils.findEveryDay(jobParam.getBeginTime(), jobParam.getEndTime());
for (String item : timeRange) {
log.info(item + "-->开始执行");
rOperatingMonitorService.handlerMonitorOperatingD(indexLists, item);
}
} else {
rOperatingMonitorService.handlerMonitorOperatingD(indexLists, jobParam.getDataDate());
}
rOperatingMonitorService.handlerMonitorOperatingD (indexLists,jobParam.getDataDate ());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
@ApiOperation("监测点数据质量_月统计(MySQL库)")
@ApiImplicitParam(value = "jobParam",name = "jobParam",required = true)
@ApiImplicitParam(value = "jobParam", name = "jobParam", required = true)
@PostMapping("handlerMonitorOperatingM")
@OperateInfo(info = LogEnum.BUSINESS_MEDIUM)
public HttpResult<Boolean> handlerMonitorOperatingM(@RequestBody LineParam jobParam ){
public HttpResult<Boolean> handlerMonitorOperatingM(@RequestBody LineParam jobParam) {
log.info(LocalDateTime.now()+"handlerMonitorOperatingM开始执行");
log.info(LocalDateTime.now() + "handlerMonitorOperatingM开始执行");
String methodDescribe = getMethodDescribe("handlerMonitorOperatingM");
List<String> indexLists = new ArrayList<> ();
if(CollectionUtils.isEmpty (jobParam.getLineIds ())){
indexLists = lineFeignClient.getLineList ( ).getData ( );
}else{
indexLists = jobParam.getLineIds ();
List<String> indexLists;
if (CollectionUtils.isEmpty(jobParam.getLineIds())) {
indexLists = commTerminalGeneralClient.getRunMonitorIds().getData();
} else {
indexLists = jobParam.getLineIds();
}
rOperatingMonitorMService.handlerMonitorOperatingM (indexLists,jobParam.getDataDate ());
rOperatingMonitorMService.handlerMonitorOperatingM(indexLists,jobParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, true, methodDescribe);
}
}

View File

@@ -30,6 +30,6 @@ public interface DataVInfluxdbService
* @Author: clam
* @Date: 2023/2/23
*/
List<DataVFiveItemDTO> getFiveItems(String lineId, String date, Integer statisticalInterval);
List<DataVFiveItemDTO> getFiveItems(String lineId, String beginTime, String endTime, Integer statisticalInterval);
}

View File

@@ -72,20 +72,18 @@ public class DataVInfluxdbServiceImpl implements DataVInfluxdbService {
* @Date: 2023/2/23
*/
@Override
public List<DataVFiveItemDTO> getFiveItems(String lineId, String date, Integer statisticalInterval) {
public List<DataVFiveItemDTO> getFiveItems(String lineId,String beginTime, String endTime, Integer statisticalInterval) {
/*按时间分组每组16条*/
/*freq,v_thd,v_unbalance 取T项数据*/
String startTime = date+" "+"00:00:00";
String endTime = date+" "+"23:59:59";
String Sql = "SELECT time, MAX(freq) as freq_max,MIN(freq) as freq_min,MAX(v_thd) as v_thd_max,MIN(v_thd) as v_thd_min,MAX(v_unbalance) as v_unbalance_max,MIN(v_unbalance) as v_unbalance_min from data_v where line_id='"+lineId+
"'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
"'and "+ InfluxDBPublicParam.TIME+">='"+beginTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='T' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
QueryResult query = influxDbUtils.query(Sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
List<DataV> dataVS = resultMapper.toPOJO(query, DataV.class);
/*rms,rms_lvr 取ABC项数据任意一个数据*/
String Sql2 = "SELECT time, MAX(rms) as rms_max,MIN(rms) as rms_min,MAX(rms_lvr) as rms_lvr_max,MIN(rms_lvr) as rms_lvr_min from data_v where line_id='"+lineId+
"'and "+ InfluxDBPublicParam.TIME+">='"+startTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
"'and "+ InfluxDBPublicParam.TIME+">='"+beginTime+"'and "+ InfluxDBPublicParam.TIME+"<='"+endTime+"' and phasic_type ='A' and value_type='AVG' group by time("+statisticalInterval+"m ) fill(none) "+InfluxDBPublicParam.TIME_ZONE;
QueryResult query2 = influxDbUtils.query(Sql2);
InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper();
List<DataV> dataVS2 = resultMapper2.toPOJO(query2, DataV.class);

View File

@@ -151,7 +151,7 @@ public class EffectiveMinuteCountServiceImpl implements EffectiveMinuteCountServ
/*统计间隔*/
Integer statisticalInterval = temp.getStatisticalInterval ( );
/*获取监测点当天的所有数据*/
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp.getId (), dataDate,statisticalInterval);
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp.getId (), dataDate+" "+"00:00:00",dataDate+" "+"23:59:59",statisticalInterval);
/*过滤出有效接入分钟数量*/
Integer count = calculateEffectiveMinute (fiveItems, pmsAbnormalRules, voltage);

View File

@@ -1,11 +1,13 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pq.constant.Param;
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsAbnormalRulesMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
import com.njcn.prepare.harmonic.pojo.dto.DataVFiveItemDTO;
@@ -14,9 +16,6 @@ import com.njcn.prepare.harmonic.pojo.po.DataFlicker;
import com.njcn.prepare.harmonic.service.influxdb.DataIntegrityRateInfluxService;
import com.njcn.prepare.harmonic.service.influxdb.DataVInfluxdbService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpMonitorEvaluateDService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.scheduling.annotation.Async;
@@ -42,8 +41,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEvaluateDMapper, RMpMonitorEvaluateDPO> implements RMpMonitorEvaluateDService {
private final LineFeignClient lineFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final CommLineClient commLineClient;
private final DataVInfluxdbService dataVInfluxdbService;
private final PmsAbnormalRulesMapper pmsAbnormalRulesMapper;
private final DataIntegrityRateInfluxService dataIntegrityRateInfluxService;
@@ -52,52 +50,46 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void dayDataJobHandler(List<String> indexLists, String dataDate) {
public void dayDataJobHandler(List<String> indexLists, String beginTime, String endTime) {
//1、取出规则
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList (null);
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
List<RMpMonitorEvaluateDPO> rMpMonitorEvaluateDPOS = new ArrayList<>();
indexLists.forEach(temp -> {
LineDTO data = commLineClient.getLineDetail(temp).getData();
if (ObjectUtil.isNotNull(data)) {
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
Integer statisticalInterval = data.getTimeInterval();
/*电压等级*/
Double voltage = Double.parseDouble(data.getVoltageLevel());
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeName (DicDataTypeEnum.DEV_VOLTAGE.getName ( )).getData ( );
List<RMpMonitorEvaluateDPO> rMpMonitorEvaluateDPOS = new ArrayList<> ();
indexLists.forEach (temp -> {
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems(temp, beginTime,endTime, statisticalInterval);
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
/*todo 统计间隔电压等级取值方式后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
Integer statisticalInterval = data.getTimeInterval ();
/*电压等级*/
// Double voltage = PublicUtil.getVoltage (temp, dictDataList);
Double voltage =Double.parseDouble (data.getScale ().substring (0, data.getScale ().length ()-2));
rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO(rMpMonitorEvaluateDPO, fiveItems, pmsAbnormalRules, voltage, data);
Date date = DateUtil.parse(beginTime);
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems (temp, dataDate, statisticalInterval);
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData(temp, date, 5);
if (Objects.isNull(twoFlickerData)) {
rMpMonitorEvaluateDPO.setPltCount(0);
rMpMonitorEvaluateDPO.setPstCount(0);
} else {
rMpMonitorEvaluateDPO.setPltCount(twoFlickerData.getPltCount());
rMpMonitorEvaluateDPO.setPstCount(twoFlickerData.getPstCount());
}
rMpMonitorEvaluateDPO.setAllMinuteCount(fiveItems.size());
rMpMonitorEvaluateDPO.setDeviceId(data.getDevId());
rMpMonitorEvaluateDPO.setDataDate(date);
rMpMonitorEvaluateDPO.setMeasurementPointId(temp);
rMpMonitorEvaluateDPO = calculateRMpMonitorEvaluateDPO (rMpMonitorEvaluateDPO,fiveItems, pmsAbnormalRules, voltage,data);
Date date = DateUtil.parse(dataDate);
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData (temp, date, 5);
if(Objects.isNull (twoFlickerData)){
rMpMonitorEvaluateDPO.setPltCount (0);
rMpMonitorEvaluateDPO.setPstCount (0);
}else {
rMpMonitorEvaluateDPO.setPltCount (twoFlickerData.getPltCount ());
rMpMonitorEvaluateDPO.setPstCount (twoFlickerData.getPstCount ());
rMpMonitorEvaluateDPOS.add(rMpMonitorEvaluateDPO);
}
rMpMonitorEvaluateDPO.setAllMinuteCount (fiveItems.size ());
rMpMonitorEvaluateDPO.setDeviceId(devid);
rMpMonitorEvaluateDPO.setDataDate (date);
rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
rMpMonitorEvaluateDPOS.add (rMpMonitorEvaluateDPO);
});
this.saveOrUpdateBatchByMultiId (rMpMonitorEvaluateDPOS,500);
if (CollUtil.isNotEmpty(rMpMonitorEvaluateDPOS)) {
this.saveOrUpdateBatchByMultiId(rMpMonitorEvaluateDPOS, 500);
}
}
@@ -112,7 +104,7 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
* @Author: clam
* @Date: 2023/2/23
*/
private RMpMonitorEvaluateDPO calculateRMpMonitorEvaluateDPO(RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO,List<DataVFiveItemDTO> fiveItems, List<PmsAbnormalRules> pmsAbnormalRules, Double voltage,LineDetailDataVO data) {
private RMpMonitorEvaluateDPO calculateRMpMonitorEvaluateDPO(RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO, List<DataVFiveItemDTO> fiveItems, List<PmsAbnormalRules> pmsAbnormalRules, Double voltage, LineDTO data) {
Integer freqCount = 0;
Integer unbalanceCount = 0;
@@ -121,89 +113,89 @@ public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEva
Integer vThdCount = 0;
Integer effectiveMinuteCount = 0;
PmsAbnormalRules freqLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_FREQ)).collect (Collectors.toList ( )).get (0);
PmsAbnormalRules rmsLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_RMS)).collect (Collectors.toList ( )).get (0);
PmsAbnormalRules rms_lvrLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_RMS_LVR)).collect (Collectors.toList ( )).get (0);
PmsAbnormalRules v_thdLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_V_THD)).collect (Collectors.toList ( )).get (0);
PmsAbnormalRules v_unbalanceLimit = pmsAbnormalRules.stream ( ).filter (temp -> Objects.equals (temp.getTarget ( ), Param.TARGET_V_UNBALANCE)).collect (Collectors.toList ( )).get (0);
if(!CollectionUtils.isEmpty (fiveItems)){
for (DataVFiveItemDTO fiveItem : fiveItems) {
Double freqMax = fiveItem.getFreqMax ();
Double freqMin = fiveItem.getFreqMin ();
PmsAbnormalRules freqLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_FREQ)).collect(Collectors.toList()).get(0);
PmsAbnormalRules rmsLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_RMS)).collect(Collectors.toList()).get(0);
PmsAbnormalRules rms_lvrLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_RMS_LVR)).collect(Collectors.toList()).get(0);
PmsAbnormalRules v_thdLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_V_THD)).collect(Collectors.toList()).get(0);
PmsAbnormalRules v_unbalanceLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_V_UNBALANCE)).collect(Collectors.toList()).get(0);
if (!CollectionUtils.isEmpty(fiveItems)) {
for (DataVFiveItemDTO fiveItem : fiveItems) {
Double freqMax = fiveItem.getFreqMax();
Double freqMin = fiveItem.getFreqMin();
Double rmsMax = fiveItem.getRmsMax ();
Double rmsMin = fiveItem.getRmsMin ();
Double vThdMax = fiveItem.getVThdMax ();
Double vThdMin = fiveItem.getVThdMin ();
Double rmsMax = fiveItem.getRmsMax();
Double rmsMin = fiveItem.getRmsMin();
Double vThdMax = fiveItem.getVThdMax();
Double vThdMin = fiveItem.getVThdMin();
Double vUnbalanceMax = fiveItem.getVUnbalanceMax ();
Double vUnbalanceMin = fiveItem.getVUnbalanceMin ();
Double rmsLvrMax = fiveItem.getRmsLvrMax ();
Double rmsLvrMin = fiveItem.getRmsLvrMin ();
Double vUnbalanceMax = fiveItem.getVUnbalanceMax();
Double vUnbalanceMin = fiveItem.getVUnbalanceMin();
Double rmsLvrMax = fiveItem.getRmsLvrMax();
Double rmsLvrMin = fiveItem.getRmsLvrMin();
Boolean rmsflag=false;
Boolean rmsLvrflag=false;
Boolean vUnbalanceflag=false;
Boolean rmsflag = false;
Boolean rmsLvrflag = false;
Boolean vUnbalanceflag = false;
if(freqLimit.getLowerLimit ( ) <= freqMin&&freqMax <= freqLimit.getUpperLimit ( )){
freqCount++;
}
/*,监测点的接线方式,如果是星形接线这个指标要判断,角形界面则不判断,默认它是正常的*/
if(Objects.equals("0",data.getPtType())){
if(rmsLimit.getLowerLimit ( ) * (voltage / 1.732) <= rmsMin&&rmsMax <= rmsLimit.getUpperLimit ( ) * (voltage / 1.732) ){
phaseVoltageCount++;
rmsflag =true;
}
}else {
rmsflag =true;
phaseVoltageCount++;
}
if(Objects.equals("1",data.getPtPhaseType())){
if(rms_lvrLimit.getLowerLimit ( )*voltage <= rmsLvrMin&&rmsLvrMax <= rms_lvrLimit.getUpperLimit ( )*voltage){
lineVoltageCount++;
rmsLvrflag=true;
}
if (freqLimit.getLowerLimit() <= freqMin && freqMax <= freqLimit.getUpperLimit()) {
freqCount++;
}
/*,监测点的接线方式,如果是星形接线这个指标要判断,角形界面则不判断,默认它是正常的*/
if (Objects.equals("0", data.getPtType())) {
if (rmsLimit.getLowerLimit() * (voltage / 1.732) <= rmsMin && rmsMax <= rmsLimit.getUpperLimit() * (voltage / 1.732)) {
phaseVoltageCount++;
rmsflag = true;
}
} else {
rmsflag = true;
phaseVoltageCount++;
}
if (Objects.equals("1", data.getPtPhaseType())) {
if (rms_lvrLimit.getLowerLimit() * voltage <= rmsLvrMin && rmsLvrMax <= rms_lvrLimit.getUpperLimit() * voltage) {
lineVoltageCount++;
rmsLvrflag = true;
}
}else {
rmsLvrflag=true;
lineVoltageCount++;
} else {
rmsLvrflag = true;
lineVoltageCount++;
}
if(Objects.equals("1",data.getPtPhaseType())&&Objects.equals("0",data.getPtType())){
if(v_unbalanceLimit.getLowerLimit ( ) <= vUnbalanceMin&&vUnbalanceMax <= v_unbalanceLimit.getUpperLimit ( )
){
unbalanceCount++;
vUnbalanceflag=true;
}
}else {
unbalanceCount++;
vUnbalanceflag=true;
}
}
if (Objects.equals("1", data.getPtPhaseType()) && Objects.equals("0", data.getPtType())) {
if (v_unbalanceLimit.getLowerLimit() <= vUnbalanceMin && vUnbalanceMax <= v_unbalanceLimit.getUpperLimit()
) {
unbalanceCount++;
vUnbalanceflag = true;
}
} else {
unbalanceCount++;
vUnbalanceflag = true;
}
if(v_thdLimit.getLowerLimit ( ) <= vThdMin&&vThdMax <= v_thdLimit.getUpperLimit ( )){
vThdCount++;
}
if (v_thdLimit.getLowerLimit() <= vThdMin && vThdMax <= v_thdLimit.getUpperLimit()) {
vThdCount++;
}
if (freqLimit.getLowerLimit ( ) <= freqMin&&freqMax <= freqLimit.getUpperLimit ( ) &&
rmsflag &&
rmsLvrflag &&
v_thdLimit.getLowerLimit ( ) <= vThdMin&&vThdMax <= v_thdLimit.getUpperLimit ( ) &&
vUnbalanceflag
if (freqLimit.getLowerLimit() <= freqMin && freqMax <= freqLimit.getUpperLimit() &&
rmsflag &&
rmsLvrflag &&
v_thdLimit.getLowerLimit() <= vThdMin && vThdMax <= v_thdLimit.getUpperLimit() &&
vUnbalanceflag
) {
effectiveMinuteCount++;
}
}
}
) {
effectiveMinuteCount++;
}
}
}
rMpMonitorEvaluateDPO.setEffectiveMinuteCount (effectiveMinuteCount);
rMpMonitorEvaluateDPO.setFreqCount (freqCount);
rMpMonitorEvaluateDPO.setPhaseVoltageCount (phaseVoltageCount);
rMpMonitorEvaluateDPO.setLineVoltageCount (lineVoltageCount);
rMpMonitorEvaluateDPO.setVThdCount (vThdCount);
rMpMonitorEvaluateDPO.setUnbalanceCount (unbalanceCount);
rMpMonitorEvaluateDPO.setEffectiveMinuteCount(effectiveMinuteCount);
rMpMonitorEvaluateDPO.setFreqCount(freqCount);
rMpMonitorEvaluateDPO.setPhaseVoltageCount(phaseVoltageCount);
rMpMonitorEvaluateDPO.setLineVoltageCount(lineVoltageCount);
rMpMonitorEvaluateDPO.setVThdCount(vThdCount);
rMpMonitorEvaluateDPO.setUnbalanceCount(unbalanceCount);
return rMpMonitorEvaluateDPO;
}
}

View File

@@ -2,9 +2,8 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import cn.hutool.core.date.DateUtil;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.pq.api.LineFeignClient;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorDMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
@@ -38,7 +37,7 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
private final RMpMonitorEvaluateDService rMpMonitorEvaluateDService;
private final RStatAbnormalDService rStatAbnormalDService;
private final LineFeignClient lineFeignClient;
private final CommLineClient commLineClient;
/**
* @Description: 采用以下公式计算数据完整率:
@@ -66,11 +65,11 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
indexLists.forEach (temp -> {
ROperatingMonitorDPO rOperatingMonitorDPO = new ROperatingMonitorDPO();
LineDetailDataVO data = lineFeignClient.getLineDetailData (temp).getData ( );
LineDTO data = commLineClient.getLineDetail(temp).getData();
/*todo 统计间隔,电压等级取值方式,devid后期提供融合版本接口获取不然pmspqs系统取值方式不一样*/
/*统计间隔*/
Integer statisticalInterval = data.getTimeInterval ();
String devid = lineFeignClient.getLineIdByDevId(temp).getData();
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = new RMpMonitorEvaluateDPO();
rMpMonitorEvaluateDPO.setMeasurementPointId (temp);
@@ -108,8 +107,8 @@ public class ROperatingMonitorDServiceImpl extends MppServiceImpl<ROperatingMoni
rMpMonitorEvaluateDPO.getVThdCount ())*statisticalInterval/(5*1440)
)
);
rOperatingMonitorDPO.setDevId (devid);
rOperatingMonitorDPO.setMonitorState (PubUtils.getRunFlag(data.getRunFlag())+"");
rOperatingMonitorDPO.setDevId (data.getDevId());
rOperatingMonitorDPO.setMonitorState("0");
rOperatingMonitorDPOList.add (rOperatingMonitorDPO);
});
this.saveOrUpdateBatchByMultiId (rOperatingMonitorDPOList,500);

View File

@@ -7,6 +7,7 @@ import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.prepare.harmonic.mapper.mysql.line.ROperatingMonitorMMapper;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorMService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
import lombok.RequiredArgsConstructor;
@@ -37,46 +38,33 @@ public class ROperatingMonitorMServiceImpl extends MppServiceImpl<ROperatingMoni
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
public void handlerMonitorOperatingM(List<String> indexLists, String dataDate) {
Date date = DateUtil.parse (dataDate);
List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<> ( );
QueryWrapper<ROperatingMonitorDPO> queryWrapper = new QueryWrapper<> ( );
public void handlerMonitorOperatingM(List<String> indexLists,LineParam jobParam) {
List<ROperatingMonitorMPO> rOperatingMonitorMPOList = new ArrayList<>();
QueryWrapper<ROperatingMonitorDPO> queryWrapper = new QueryWrapper<>();
indexLists.forEach(temp -> {
queryWrapper.clear();
queryWrapper.eq("measurement_point_id", temp)
.ge("data_date", jobParam.getBeginTime())
.le("data_date", jobParam.getEndTime());
List<ROperatingMonitorDPO> list = rOperatingMonitorService.list(queryWrapper);
indexLists.forEach (temp -> {
queryWrapper.clear ( );
queryWrapper.eq ("measurement_point_id", temp).
eq ("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring (0, 7));
List<ROperatingMonitorDPO> list = rOperatingMonitorService.list (queryWrapper);
if(CollectionUtils.isEmpty(list)) {
if (CollectionUtils.isEmpty(list)) {
return;
}
ROperatingMonitorMPO rOperatingMonitorMPO = new ROperatingMonitorMPO ( );
BigDecimal dataIntegrityRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getDataIntegrityRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
BigDecimal dataRightRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getDataRightRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
BigDecimal indexIntegrityRate = BigDecimal.valueOf (
list.stream ( ).
mapToDouble (po -> po.getIndexIntegrityRate ( ).doubleValue ( ))
.average ( ).getAsDouble ( )
);
rOperatingMonitorMPO.setMeasurementPointId (temp);
rOperatingMonitorMPO.setDataDate (date);
rOperatingMonitorMPO.setDataIntegrityRate (dataIntegrityRate);
rOperatingMonitorMPO.setDataRightRate (dataRightRate);
rOperatingMonitorMPO.setIndexIntegrityRate (indexIntegrityRate);
rOperatingMonitorMPO.setDevId (list.get (0).getDevId ( ));
List<Integer> collect = list.stream ( ).map (ROperatingMonitorDPO::getIsUnusual).collect (Collectors.toList ( ));
rOperatingMonitorMPO.setIsUnusual (collect.contains (Integer.valueOf (0)) ? 0 : 1);
rOperatingMonitorMPOList.add (rOperatingMonitorMPO);
ROperatingMonitorMPO rOperatingMonitorMPO = new ROperatingMonitorMPO();
BigDecimal dataIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble());
BigDecimal dataRightRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getDataRightRate().doubleValue()).average().getAsDouble());
BigDecimal indexIntegrityRate = BigDecimal.valueOf(list.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble());
rOperatingMonitorMPO.setMeasurementPointId(temp);
rOperatingMonitorMPO.setDataDate(DateUtil.parse(jobParam.getDataDate()));
rOperatingMonitorMPO.setDataIntegrityRate(dataIntegrityRate);
rOperatingMonitorMPO.setDataRightRate(dataRightRate);
rOperatingMonitorMPO.setIndexIntegrityRate(indexIntegrityRate);
rOperatingMonitorMPO.setDevId(list.get(0).getDevId());
List<Integer> collect = list.stream().map(ROperatingMonitorDPO::getIsUnusual).collect(Collectors.toList());
rOperatingMonitorMPO.setIsUnusual(collect.contains(Integer.valueOf(0)) ? 0 : 1);
rOperatingMonitorMPOList.add(rOperatingMonitorMPO);
});
this.saveOrUpdateBatchByMultiId ( rOperatingMonitorMPOList,500);
this.saveOrUpdateBatchByMultiId(rOperatingMonitorMPOList, 500);
}
}

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/19 15:42【需求编号】
@@ -16,12 +15,12 @@ import java.util.List;
*/
public interface RMpMonitorEvaluateDService extends IMppService<RMpMonitorEvaluateDPO> {
/**
* @Description: dayDataJobHandler
* @Param: [indexLists, startTime, endTime]
* @return: void
* @Author: clam
* @Date: 2023/4/19
*/
void dayDataJobHandler(List<String> indexLists, String dataDate);
}
/**
* @Description: dayDataJobHandler
* @Param: [indexLists, startTime, endTime]
* @return: void
* @Author: clam
* @Date: 2023/4/19
*/
void dayDataJobHandler(List<String> indexLists, String beginTime, String endTime);
}

View File

@@ -2,11 +2,11 @@ package com.njcn.prepare.harmonic.service.mysql.line;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 15:41【需求编号】
@@ -16,12 +16,12 @@ import java.util.List;
*/
public interface ROperatingMonitorMService extends IMppService<ROperatingMonitorMPO> {
/**
* @Description: handlerMonitorOperatingM
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingM(List<String> indexLists, String dataDate);
}
/**
* @Description: handlerMonitorOperatingM
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingM(List<String> indexLists, LineParam jobParam);
}

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 10:17【需求编号】
@@ -16,12 +15,12 @@ import java.util.List;
*/
public interface ROperatingMonitorService extends IMppService<ROperatingMonitorDPO> {
/**
* @Description: handlerMonitorOperatingD
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingD(List<String> indexLists, String dataDate);
}
/**
* @Description: handlerMonitorOperatingD
* @Param: [indexLists, dataDate]
* @return: void
* @Author: clam
* @Date: 2023/4/21
*/
void handlerMonitorOperatingD(List<String> indexLists, String dataDate);
}

View File

@@ -6,7 +6,6 @@ import com.njcn.prepare.harmonic.pojo.mysql.RStatAbnormalDPO;
import java.util.List;
/**
*
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2023/4/21 9:07【需求编号】
@@ -17,5 +16,5 @@ import java.util.List;
public interface RStatAbnormalDService extends IMppService<RStatAbnormalDPO> {
void handlerMonitorAbnormal(List<String> indexLists, String dataDate);
}
void handlerMonitorAbnormal(List<String> indexLists, String dataDate);
}