算法改造

This commit is contained in:
2023-11-14 20:17:28 +08:00
parent f934dc8336
commit 8bef9db9c8
12 changed files with 289 additions and 94 deletions

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.time.LocalDate;
import java.util.Date;
/**
@@ -24,10 +25,10 @@ import java.util.Date;
@TableName(value = "r_mp_dev_evaluate_detail")
public class RMpDevEvaluateDetailPO {
/**
* 生成数据的时间,每统计一次
* 生成数据的时间,每统计一次
*/
@MppMultiId(value = "data_date")
private Date dataDate;
private LocalDate dataDate;
/**
* 终端id

View File

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.Date;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
@@ -23,7 +25,7 @@ public class RStatDevSignalDPO {
* 更新时间
*/
@MppMultiId(value = "data_date")
private Date dataDate;
private LocalDate dataDate;
/**
* 终端Id

View File

@@ -2,7 +2,9 @@ package com.njcn.prepare.executor;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.service.mysql.area.IRMpMonitorAlarmCountMService;
import com.njcn.prepare.harmonic.service.mysql.area.RMpDevEvaluateDetailPOService;
import com.njcn.prepare.harmonic.service.mysql.area.RMpTargetWarnDService;
import com.njcn.prepare.harmonic.service.mysql.device.RStatDevSignalDPOService;
import com.njcn.prepare.harmonic.service.mysql.line.DayDataService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailService;
@@ -49,6 +51,9 @@ public class MeasurementExecutor extends BaseExecutor {
private final IRMpMonitorAlarmCountMService rMpMonitorAlarmCountMService;
private final PollutionService pollutionService;
private final RStatDevSignalDPOService rStatDevSignalDPOService;
private final RMpDevEvaluateDetailPOService rMpDevEvaluateDetailPOService;
private final NormalLimitService normLimitService;
/**
* 算法名: 3.3.1.1-----监测点评价
@@ -343,6 +348,36 @@ public class MeasurementExecutor extends BaseExecutor {
}
}
/**
* 算法名: 3.3.3.1-----终端通信管理_日统计(r_stat_dev_signal_d)
*
* @author xuyang
* @date 2023年11月14日 13:51
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatDevSignal", nodeType = NodeTypeEnum.COMMON)
public boolean rStatDevSignalAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatDevSignal", nodeType = NodeTypeEnum.COMMON)
public void rStatDevSignalProcess(NodeComponent bindCmp) {
rStatDevSignalDPOService.devSignalD(bindCmp.getRequestData());
}
/**
* 算法名: 3.3.3.2-----终端数据评价_日统计(r_mp_dev_evaluate_detail)
*
* @author xuyang
* @date 2023年11月14日 16:06
*/
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rMpDevEvaluateDetail", nodeType = NodeTypeEnum.COMMON)
public boolean rMpDevEvaluateDetailAccess(NodeComponent bindCmp) {
return isAccess(bindCmp);
}
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rMpDevEvaluateDetail", nodeType = NodeTypeEnum.COMMON)
public void rMpDevEvaluateDetailProcess(NodeComponent bindCmp) {
rMpDevEvaluateDetailPOService.devEvaluateDetail(bindCmp.getRequestData());
}
/********************************************算法负责人:xy结束***********************************************************/

View File

@@ -97,10 +97,10 @@ public class RMpDevEvaluateDetailController extends BaseController {
deviceParam.setDataDate(item);
deviceParam.setBeginTime(item + " " + "00:00:00");
deviceParam.setEndTime(item + " " + "23:59:59");
rMpDevEvaluateDetailPOService.handler(deviceParam);
// rMpDevEvaluateDetailPOService.handler(deviceParam);
}
} else {
rMpDevEvaluateDetailPOService.handler(deviceParam);
// rMpDevEvaluateDetailPOService.handler(deviceParam);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}

View File

@@ -98,10 +98,10 @@ public class RStatDevSignalController extends BaseController {
deviceParam.setDataDate(item);
deviceParam.setBeginTime(item + " " + "00:00:00");
deviceParam.setEndTime(item + " " + "23:59:59");
rStatDevSignalDPOService.eventdetailHandler(deviceParam);
// rStatDevSignalDPOService.eventdetailHandler(deviceParam);
}
} else {
rStatDevSignalDPOService.eventdetailHandler(deviceParam);
// rStatDevSignalDPOService.eventdetailHandler(deviceParam);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}

View File

@@ -1,6 +1,8 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
@@ -117,9 +119,6 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
List<String> deviceIds = primaryGridDataIntegrityParam.getDeviceId();
String dataDate = primaryGridDataIntegrityParam.getDataDate();
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
final Date tempDate = new SimpleDateFormat("yyyy-MM-dd").parse(dataDate);
deviceIds.forEach(deviceId -> {
double dev_data_rate = 0.00;
/*获取终端下的监测点集合*/
@@ -144,7 +143,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
}
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId(deviceId);
rMpDevEvaluateDetailPO.setDataDate(tempDate);
rMpDevEvaluateDetailPO.setDataDate(LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_FORMATTER));
rMpDevEvaluateDetailPO.setDevDataRate(dev_data_rate);
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});

View File

@@ -1,29 +1,45 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.github.jknack.handlebars.internal.antlr.misc.Array2DHashSet;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpDevEvaluateDetailPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
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;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.pojo.po.RMpDevSolveDetailPO;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
import com.njcn.prepare.harmonic.service.mysql.area.RMpDevEvaluateDetailPOService;
import com.njcn.prepare.harmonic.service.mysql.device.RMpDevSolveDetailPOService;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.SetUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
*
@@ -36,60 +52,128 @@ import java.util.List;
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class RMpDevEvaluateDetailPOServiceImpl extends MppServiceImpl<RMpDevEvaluateDetailPOMapper, RMpDevEvaluateDetailPO> implements RMpDevEvaluateDetailPOService{
private final ROperatingMonitorDMapper rOperatingMonitorDMapper;
private final RMpDevSolveDetailPOService rMpDevSolveDetailPOService;
private final DecimalFormat df = new DecimalFormat("#.00");
private final RMpMonitorEvaluateDMapper revaluateDMapper;
private final CommTerminalGeneralClient commTerminalGeneralClient;
// @Override
// @Transactional(rollbackFor = {Exception.class})
// @Async("asyncExecutor")
// @SneakyThrows
// public void handler(DeviceParam deviceParam) {
//
// List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
// Date date = DateUtil.parse(deviceParam.getDataDate());
// QueryWrapper<ROperatingMonitorDPO> wrapper = new QueryWrapper<>();
// QueryWrapper<RMpDevSolveDetailPO> wrapper1 = new QueryWrapper<>();
//
// deviceParam.getDetailList().forEach(temp -> {
//
// RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
// rMpDevEvaluateDetailPO.setDeviceId(temp.getDevId());
// rMpDevEvaluateDetailPO.setDataDate(date);
//
// wrapper.clear();
// wrapper1.clear();
// wrapper1.select(RMpDevSolveDetailPO.COL_DEFECT_SEVERITY).
// eq(RMpDevSolveDetailPO.COL_DEVICE_ID,temp.getDevId()).
// eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",deviceParam.getDataDate());
// RMpDevSolveDetailPO one = rMpDevSolveDetailPOService.getOne(wrapper1);
// Double defectSeverity = PubUtils.getDefectSeverity(one.getDefectSeverity());
// rMpDevEvaluateDetailPO.setDevScore(Double.valueOf(df.format(defectSeverity/3)));
//
// List<ROperatingMonitorDPO> rOperatingMonitorDPOS = new ArrayList<>();
//
// List<String> lineIds = temp.getLineIds();
// if(CollUtil.isNotEmpty(lineIds)){
// wrapper.in("measurement_point_id", lineIds);
// rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(wrapper);
// }
// double asDouble1=0.00 ,asDouble2=0.00,aDouble=0.00;
// if(rOperatingMonitorDPOS.size()>0){
// asDouble1= rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble();
// asDouble2 = rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble();
// long count = rOperatingMonitorDPOS.stream().filter(po -> po.getIsUnusual() == 1 && po.getDataIntegrityRate().compareTo(new BigDecimal(0.95)) == 1).count();
// aDouble = Double.valueOf(count) / rOperatingMonitorDPOS.size();
// }
// rMpDevEvaluateDetailPO.setDevDataRate(Double.valueOf(df.format(asDouble1)));
// rMpDevEvaluateDetailPO.setDevTargetRate(Double.valueOf(df.format(asDouble2)));
// rMpDevEvaluateDetailPO.setDevEffectiveRate(Double.valueOf(df.format(aDouble)));
// rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
//
// });
// this.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList,500);
// }
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void handler(DeviceParam deviceParam) {
public void devEvaluateDetail(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>终端评价详情-日统计算法开始");
List<RMpDevEvaluateDetailPO> rMpDevEvaluateDetailPOList = new ArrayList<>();
Date date = DateUtil.parse(deviceParam.getDataDate());
QueryWrapper<ROperatingMonitorDPO> wrapper = new QueryWrapper<>();
QueryWrapper<RMpDevSolveDetailPO> wrapper1 = new QueryWrapper<>();
deviceParam.getDetailList().forEach(temp -> {
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId(temp.getDevId());
rMpDevEvaluateDetailPO.setDataDate(date);
wrapper.clear();
wrapper1.clear();
wrapper1.select(RMpDevSolveDetailPO.COL_DEFECT_SEVERITY).
eq(RMpDevSolveDetailPO.COL_DEVICE_ID,temp.getDevId()).
eq("DATE_FORMAT( data_date ,'%Y-%m-%d')",deviceParam.getDataDate());
RMpDevSolveDetailPO one = rMpDevSolveDetailPOService.getOne(wrapper1);
Double defectSeverity = PubUtils.getDefectSeverity(one.getDefectSeverity());
rMpDevEvaluateDetailPO.setDevScore(Double.valueOf(df.format(defectSeverity/3)));
List<ROperatingMonitorDPO> rOperatingMonitorDPOS = new ArrayList<>();
List<String> lineIds = temp.getLineIds();
if(CollUtil.isNotEmpty(lineIds)){
wrapper.in("measurement_point_id", lineIds);
rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(wrapper);
List<ROperatingMonitorDPO> operatingMonitorList = new ArrayList<>();
List<RMpDevSolveDetailPO> devSolveDetailList = new ArrayList<>();
List<LineDevGetDTO> lineDevGetList = new ArrayList<>();
List<String> deviceList = new ArrayList<>();
List<String> lineIds = calculatedParam.getIdList();
//以尺寸100分片,查询数据
List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
for (List<String> pendingId : pendingIds) {
//获取监测点评价详情
LambdaQueryWrapper<ROperatingMonitorDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(ROperatingMonitorDPO::getMeasurementPointId,pendingId)
.eq(ROperatingMonitorDPO::getDataDate,calculatedParam.getDataDate());
List<ROperatingMonitorDPO> ls = rOperatingMonitorDMapper.selectList(lambdaQueryWrapper);
operatingMonitorList.addAll(ls);
//监测点详情
lineDevGetList.addAll(commTerminalGeneralClient.getMonitorDetailList(pendingId).getData());
}
Map<String,List<ROperatingMonitorDPO>> map1 = operatingMonitorList.stream().collect(Collectors.groupingBy(ROperatingMonitorDPO::getDevId));
Map<String,List<LineDevGetDTO>> map2 = lineDevGetList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
//获取装置集合
map2.forEach((k,v)->{
if (!deviceList.contains(k)){
deviceList.add(k);
}
double asDouble1=0.00 ,asDouble2=0.00,aDouble=0.00;
if(rOperatingMonitorDPOS.size()>0){
asDouble1= rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble();
asDouble2 = rOperatingMonitorDPOS.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble();
long count = rOperatingMonitorDPOS.stream().filter(po -> po.getIsUnusual() == 1 && po.getDataIntegrityRate().compareTo(new BigDecimal(0.95)) == 1).count();
aDouble = Double.valueOf(count) / rOperatingMonitorDPOS.size();
}
rMpDevEvaluateDetailPO.setDevDataRate(Double.valueOf(df.format(asDouble1)));
rMpDevEvaluateDetailPO.setDevTargetRate(Double.valueOf(df.format(asDouble2)));
rMpDevEvaluateDetailPO.setDevEffectiveRate(Double.valueOf(df.format(aDouble)));
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});
this.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList,500);
//以尺寸100分片,查询装置数据
List<List<String>> devIds = ListUtils.partition(deviceList,100);
for (List<String> devId : devIds) {
//获取终端消缺明细数据
LambdaQueryWrapper<RMpDevSolveDetailPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(RMpDevSolveDetailPO::getDeviceId,devId)
.eq(RMpDevSolveDetailPO::getDataDate,calculatedParam.getDataDate());
List<RMpDevSolveDetailPO> ls = rMpDevSolveDetailPOService.list(lambdaQueryWrapper);
devSolveDetailList.addAll(ls);
}
Map<String,List<RMpDevSolveDetailPO>> map3 = devSolveDetailList.stream().collect(Collectors.groupingBy(RMpDevSolveDetailPO::getDeviceId));
map2.forEach((k,v)->{
RMpDevEvaluateDetailPO rMpDevEvaluateDetailPO = new RMpDevEvaluateDetailPO();
rMpDevEvaluateDetailPO.setDeviceId(k);
rMpDevEvaluateDetailPO.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(),DatePattern.NORM_DATE_FORMATTER));
rMpDevEvaluateDetailPO.setDevScore(Objects.isNull(map3.get(k)) ? null: PubUtils.getDefectSeverity(map3.get(k).get(0).getDefectSeverity()));
if (!Objects.isNull(map1.get(k))){
List<ROperatingMonitorDPO> ls = map1.get(k);
double d1 = ls.stream().mapToDouble(po -> po.getDataIntegrityRate().doubleValue()).average().getAsDouble();
double d2 = ls.stream().mapToDouble(po -> po.getIndexIntegrityRate().doubleValue()).average().getAsDouble();
rMpDevEvaluateDetailPO.setDevDataRate(d1);
rMpDevEvaluateDetailPO.setDevTargetRate(d2);
long count = ls.stream().filter(po -> po.getIsUnusual() == 1 && po.getDataIntegrityRate().compareTo(new BigDecimal(0.95)) == 1).count();
double d3 = (double) count / ls.size();
rMpDevEvaluateDetailPO.setDevEffectiveRate(d3);
}
rMpDevEvaluateDetailPOList.add(rMpDevEvaluateDetailPO);
});
if (CollectionUtil.isNotEmpty(rMpDevEvaluateDetailPOList)){
this.saveOrUpdateBatchByMultiId(rMpDevEvaluateDetailPOList,100);
}
}
}

View File

@@ -1,9 +1,16 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.device;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpMonitorEvaluateDMapper;
import com.njcn.prepare.harmonic.pojo.mysql.RMpMonitorEvaluateDPO;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
@@ -12,6 +19,10 @@ import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -20,9 +31,10 @@ import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
import com.njcn.prepare.harmonic.service.mysql.device.RStatDevSignalDPOService;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* Description:
@@ -33,49 +45,99 @@ import java.util.List;
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class RStatDevSignalDPOServiceImpl extends MppServiceImpl<RStatDevSignalDPOMapper, RStatDevSignalDPO> implements RStatDevSignalDPOService {
private final RMpMonitorEvaluateDMapper revaluateDMapper;
private final
DicDataFeignClient dicDataFeignClient;
private final CommTerminalGeneralClient commTerminalGeneralClient;
@Override
@Transactional(rollbackFor = {Exception.class})
@Async("asyncExecutor")
@SneakyThrows
public void eventdetailHandler(DeviceParam deviceParam) {
List<RStatDevSignalDPO> rStatDevSignalDPOList = new ArrayList<>();
Date date = DateUtil.parse(deviceParam.getDataDate());
QueryWrapper<RMpMonitorEvaluateDPO> wrapper = new QueryWrapper<>();
public void devSignalD(CalculatedParam calculatedParam) {
log.info(LocalDateTime.now()+"===>终端通信管理日统计算法开始");
List<LineDevGetDTO> lineDevGetList = new ArrayList<>();
List<RStatDevSignalDPO> rStatDevSignalList = new ArrayList<>();
List<RMpMonitorEvaluateDPO> evaluateList = new ArrayList<>();
DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.RUNNING.getCode()).getData();
deviceParam.getDetailList().forEach(temp -> {
List<String> lineIds = calculatedParam.getIdList();
//以尺寸100分片,查询数据
List<List<String>> pendingIds = ListUtils.partition(lineIds,100);
for (List<String> pendingId : pendingIds) {
//获取监测点评价详情
LambdaQueryWrapper<RMpMonitorEvaluateDPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(RMpMonitorEvaluateDPO::getMeasurementPointId,pendingId)
.eq(RMpMonitorEvaluateDPO::getDataDate,calculatedParam.getDataDate());
List<RMpMonitorEvaluateDPO> ls = revaluateDMapper.selectList(lambdaQueryWrapper);
evaluateList.addAll(ls);
//监测点详情
lineDevGetList.addAll(commTerminalGeneralClient.getMonitorDetailList(pendingId).getData());
}
Map<String,List<RMpMonitorEvaluateDPO>> map1 = evaluateList.stream().collect(Collectors.groupingBy(RMpMonitorEvaluateDPO::getDeviceId));
Map<String,List<LineDevGetDTO>> map2 = lineDevGetList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
RStatDevSignalDPO rStatDevSignalDPO = new RStatDevSignalDPO();
rStatDevSignalDPO.setDeviceId(temp.getDevId());
rStatDevSignalDPO.setDeviceStatus(data.getId());
rStatDevSignalDPO.setUpdateTime(temp.getUpdateTime());
rStatDevSignalDPO.setDataDate(date);
/**
* 1、运行状态设备下任意一个监测点有效接入分钟数effective_minute_count > 0为在线状态反之离线状态
*/
Integer effective_minute_count = 0;
List<String> lineIds = temp.getLineIds();
if (CollUtil.isNotEmpty(lineIds)) {
wrapper.clear();
wrapper.select("sum(effective_minute_count) as effective_minute_count ");
wrapper.eq("device_id", temp.getDevId());
wrapper.in("measurement_point_id", lineIds);
RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = revaluateDMapper.selectOne(wrapper);
effective_minute_count = rMpMonitorEvaluateDPO.getEffectiveMinuteCount();
map2.forEach((k,v)->{
RStatDevSignalDPO rStatDevSignal = new RStatDevSignalDPO();
rStatDevSignal.setDeviceId(k);
rStatDevSignal.setDeviceStatus(data.getId());
if (!Objects.isNull(v.get(0).getUpdateTime())){
rStatDevSignal.setUpdateTime(v.get(0).getUpdateTime().format(DatePattern.NORM_DATETIME_FORMATTER));
}
String runStatus = "0";
if (effective_minute_count > 0 && temp.getDeviceStatus().equals("1")) {
runStatus = "1";
rStatDevSignal.setDataDate(LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(),DatePattern.NORM_DATE_FORMATTER));
if (CollectionUtil.isNotEmpty(map1.get(k))){
int count = map1.get(k).stream().mapToInt(RMpMonitorEvaluateDPO::getEffectiveMinuteCount).sum();
if (count > 0){
rStatDevSignal.setRunStatus("1");
} else {
rStatDevSignal.setRunStatus("0");
}
} else {
rStatDevSignal.setRunStatus("0");
}
rStatDevSignalDPO.setRunStatus(runStatus);
rStatDevSignalDPOList.add(rStatDevSignalDPO);
rStatDevSignalList.add(rStatDevSignal);
});
this.saveOrUpdateBatchByMultiId(rStatDevSignalDPOList, 500);
if (CollectionUtil.isNotEmpty(rStatDevSignalList)){
this.saveOrUpdateBatchByMultiId(rStatDevSignalList, 100);
}
}
// public void eventdetailHandler(DeviceParam deviceParam) {
// List<RStatDevSignalDPO> rStatDevSignalDPOList = new ArrayList<>();
// Date date = DateUtil.parse(deviceParam.getDataDate());
// QueryWrapper<RMpMonitorEvaluateDPO> wrapper = new QueryWrapper<>();
// DictData data = dicDataFeignClient.getDicDataByCode(DicDataEnum.RUNNING.getCode()).getData();
// deviceParam.getDetailList().forEach(temp -> {
//
// RStatDevSignalDPO rStatDevSignalDPO = new RStatDevSignalDPO();
// rStatDevSignalDPO.setDeviceId(temp.getDevId());
// rStatDevSignalDPO.setDeviceStatus(data.getId());
// rStatDevSignalDPO.setUpdateTime(temp.getUpdateTime());
// rStatDevSignalDPO.setDataDate(date);
// /**
// * 1、运行状态设备下任意一个监测点有效接入分钟数effective_minute_count > 0为在线状态反之离线状态
// */
// Integer effective_minute_count = 0;
// List<String> lineIds = temp.getLineIds();
// if (CollUtil.isNotEmpty(lineIds)) {
// wrapper.clear();
// wrapper.select("sum(effective_minute_count) as effective_minute_count ");
// wrapper.eq("device_id", temp.getDevId());
// wrapper.in("measurement_point_id", lineIds);
// RMpMonitorEvaluateDPO rMpMonitorEvaluateDPO = revaluateDMapper.selectOne(wrapper);
// effective_minute_count = rMpMonitorEvaluateDPO.getEffectiveMinuteCount();
// }
// String runStatus = "0";
// if (effective_minute_count > 0 && temp.getDeviceStatus().equals("1")) {
// runStatus = "1";
// }
// rStatDevSignalDPO.setRunStatus(runStatus);
// rStatDevSignalDPOList.add(rStatDevSignalDPO);
//
// });
// this.saveOrUpdateBatchByMultiId(rStatDevSignalDPOList, 500);
// }
}

View File

@@ -259,12 +259,12 @@ public class NormalLimitServiceImpl extends ServiceImpl<AbnormalMapper, MpSurplu
if (CollUtil.isNotEmpty(all)) {
//入库操作
this.saveBatch(all,1000);
this.saveBatch(all,1000);
}
log.info("运行时长:"+timeInterval.intervalSecond());
return true;
}
}
/**
@@ -513,7 +513,7 @@ public class NormalLimitServiceImpl extends ServiceImpl<AbnormalMapper, MpSurplu
private void dealData(Map<String, List<Map<String, Object>>> inMap,
String phasic,Map<String, Object> overLimit,
Boolean flag,MpSurplusAbnormalD mpSurplusAbnormalCp95,MpSurplusAbnormalD mpSurplusAbnormalAvg,MpSurplusAbnormalD mpSurplusAbnormalMax,MpSurplusAbnormalD mpSurplusAbnormalMin
,int start,int count,int type,String overTag,String temTag){
,int start,int count,int type,String overTag,String temTag){
if (inMap.containsKey(phasic)) {
List<Map<String, Object>> mapList = inMap.get(phasic);

View File

@@ -1,7 +1,6 @@
package com.njcn.prepare.harmonic.service.mysql.area;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.LineParam;
/**
* <p>

View File

@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.area;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.harmonic.pojo.po.RMpDevEvaluateDetailPO;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
@@ -16,6 +17,11 @@ import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
*/
public interface RMpDevEvaluateDetailPOService extends IMppService<RMpDevEvaluateDetailPO> {
// void handler(DeviceParam deviceParam);
void handler(DeviceParam deviceParam);
/**
* 终端评价详情表_日统计
* @param calculatedParam
*/
void devEvaluateDetail(CalculatedParam calculatedParam);
}

View File

@@ -1,6 +1,7 @@
package com.njcn.prepare.harmonic.service.mysql.device;
import com.github.jeffreyning.mybatisplus.service.IMppService;
import com.njcn.prepare.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.param.DeviceParam;
import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
@@ -13,6 +14,12 @@ import com.njcn.prepare.harmonic.pojo.po.RStatDevSignalDPO;
*/
public interface RStatDevSignalDPOService extends IMppService<RStatDevSignalDPO> {
void eventdetailHandler(DeviceParam deviceParam);
// void eventdetailHandler(DeviceParam deviceParam);
/**
* 终端通信管理_日统计
* @param calculatedParam
*/
void devSignalD(CalculatedParam calculatedParam);
}