河北pms两级文档需求开发

This commit is contained in:
cdf
2024-05-11 16:51:31 +08:00
parent 1e9644c8a3
commit fac26809a4
9 changed files with 209 additions and 30 deletions

View File

@@ -19,9 +19,7 @@ import com.njcn.harmonic.pojo.dto.upload.PqEvaluationCreateDTO;
import com.njcn.harmonic.pojo.param.UploadDataParam;
import com.njcn.harmonic.pojo.param.UploadParam;
import com.njcn.harmonic.pojo.param.upload.DimBusBarParam;
import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD;
import com.njcn.harmonic.pojo.po.upload.RDimBusUpD;
import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD;
import com.njcn.harmonic.pojo.po.upload.*;
import com.njcn.harmonic.pojo.vo.upload.DimBusBarVO;
import com.njcn.harmonic.pojo.vo.upload.UploadEvaluationDataVo;
import com.njcn.harmonic.service.upload.IEvaluationDataService;
@@ -36,6 +34,7 @@ import com.njcn.web.utils.GwSendUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.ListUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -209,29 +208,53 @@ public class REvaluationDataServiceImpl extends ServiceImpl<RUploadEvaluationDat
if (StrUtil.isNotBlank(param.getIndexType())) {
QueryWrapper<RDimBusUpD> queryWrapper = new QueryWrapper<>();
this.harmTarget(param, queryWrapper);
queryWrapper.eq("statistic_date", day);
queryWrapper.eq("statistic_date", day).eq("stat_date",param.getStatDate());
List<RDimBusUpD> rDimBusUpDList = rDimBusUpDMapper.selectList(queryWrapper);
if (CollectionUtil.isEmpty(rDimBusUpDList)) {
return new Page<>();
}
temBusIds = rDimBusUpDList.stream().map(RDimBusUpD::getMidBusId).distinct().collect(Collectors.toList());
}
param.setOnlineBusIds(temBusIds);
} else if (param.getStatType().equals("02")) {
LocalDate monthBegin = LocalDate.parse(param.getStartTime());
//具体日期投运,监测台账查询
LambdaQueryWrapper<PmsRunStatisticM> dayLam = new LambdaQueryWrapper<>();
dayLam.eq(PmsRunStatisticM::getStatisticDate, monthBegin).in(PmsRunStatisticM::getDeptId, param.getNodeId()).eq(PmsRunStatisticM::getStatDate,param.getStatDate());
PmsRunStatisticM pmsRunStatisticM = pmsRunStatisticMMapper.selectOne(dayLam);
if (Objects.nonNull(pmsRunStatisticM)) {
if (StrUtil.isNotBlank(param.getDataSource())) {
temBusIds = new ArrayList<>(Arrays.asList(pmsRunStatisticM.getOnlineBusMidIds().split(StrUtil.COMMA)));
} else {
temBusIds = new ArrayList<>(Arrays.asList(pmsRunStatisticM.getRunBusIds().split(StrUtil.COMMA)));
}
}
//稳态指标条件筛选
if (StrUtil.isNotBlank(param.getIndexType())) {
QueryWrapper<RDimBusUpM> queryWrapper = new QueryWrapper<>();
this.harmTarget(param, queryWrapper);
queryWrapper.eq("statistic_date", monthBegin);
List<RDimBusUpM> rDimBusUpMList = rDimBusUpMMapper.selectList(queryWrapper);
if (CollectionUtil.isEmpty(rDimBusUpMList)) {
return new Page<>();
}
temBusIds = rDimBusUpMList.stream().map(RDimBusUpM::getMidBusId).distinct().collect(Collectors.toList());
}
} else if (param.getStatType().equals("01")) {
}
}
param.setOnlineBusIds(temBusIds);
if (CollectionUtil.isEmpty(temBusIds)) {
return new Page<>();
}
return this.baseMapper.getBaseEvaOnlineBusDetail(new Page<>(param.getPageNum(), param.getPageSize()), param);
}
private void harmTarget(DimBusBarParam param, QueryWrapper<RDimBusUpD> queryWrapper) {
private void harmTarget(DimBusBarParam param, QueryWrapper queryWrapper) {
//稳态指标条件筛选
String target = "", harmV = "";
switch (param.getIndexType()) {

View File

@@ -20,4 +20,8 @@ public interface DimBusGlobalFeignClient {
@GetMapping("/runLedgerStatistic")
void runLedgerStatistic (@RequestParam("date")String date);
@GetMapping("/dimBusUpEveryDay")
void dimBusUpEveryDay (@RequestParam("date")String date);
}

View File

@@ -30,6 +30,12 @@ public class DimBusGlobalFeignClientFallbackFactory implements FallbackFactory<D
log.error("{}异常,降级处理,异常为:{}", "统计周期台账运行详细信息: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
@Override
public void dimBusUpEveryDay(String date) {
log.error("{}异常,降级处理,异常为:{}", "统计每日母线稳态超标详情: ", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -308,9 +308,13 @@ public class IRDimBusGlobalDController extends BaseController {
@ApiOperation("统计每日母线稳态超标详情")
@Async("asyncExecutor")
public void dimBusUpEveryDay(@RequestParam("date") String date) {
TimeInterval timeInterval = new TimeInterval();
irDimBusUpDService.handBusDay(date);
System.out.println(timeInterval.intervalSecond());
irDimBusUpMService.handMonth(date);
irDimBusUpYService.handYear(date);
}

View File

@@ -6,4 +6,6 @@ import com.njcn.device.pq.pojo.po.RStatIntegrityD;
public interface RStatIntegrityDMapper extends MppBaseMapper<RStatIntegrityD> {
}

View File

@@ -14,4 +14,7 @@ import com.njcn.harmonic.pojo.po.upload.RDimBusUpY;
*/
public interface IRDimBusUpYService extends IMppService<RDimBusUpY> {
void handYear(String date);
}

View File

@@ -3,6 +3,7 @@ package com.njcn.prepare.harmonic.service.mysql.upload.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -60,6 +61,7 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl<RDimBusUpDMapper, RDim
@Override
public void handBusDay(String date) {
TimeInterval timeInterval = new TimeInterval();
LocalDate localDate = LocalDate.parse(date);
QueryWrapper<RStatIntegrityD> queryWrapper = new QueryWrapper<>();
@@ -82,6 +84,12 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl<RDimBusUpDMapper, RDim
List<RStatDataVDPO> rStatDataVDPOList = rStatDataVDMapper.selectList(new LambdaQueryWrapper<RStatDataVDPO>().in(RStatDataVDPO::getLineId,allMonitorIds).eq(RStatDataVDPO::getTime,localDate).eq(RStatDataVDPO::getValueType,"AVG").in(RStatDataVDPO::getPhasicType, Stream.of("A","B","C").collect(Collectors.toList())));
Map<String,List<RStatDataVDPO>> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getLineId));
List<RStatLimitRateDPO> rStatLimitRateDPOList = rStatLimitRateDMapper.selectList(
new LambdaQueryWrapper<RStatLimitRateDPO>().in(RStatLimitRateDPO::getLineId,allMonitorIds)
.eq(RStatLimitRateDPO::getTime,localDate).in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList())));
Map<String,List<RStatLimitRateDPO>> limtMap = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
Map<String,List<Monitor>> listMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId));
List<RDimBusUpD> poList = new ArrayList<>();
@@ -91,9 +99,6 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl<RDimBusUpDMapper, RDim
if(CollectionUtil.isNotEmpty(temIntegrity)){
RStatIntegrityD maxR = temIntegrity.stream().max(Comparator.comparing(RStatIntegrityD::getIntegrityData)).orElse(null);
assert maxR != null;
List<RStatLimitRateDPO> rStatLimitRateDPOList = rStatLimitRateDMapper.selectList(
new LambdaQueryWrapper<RStatLimitRateDPO>().eq(RStatLimitRateDPO::getLineId,maxR.getLineIndex())
.eq(RStatLimitRateDPO::getTime,localDate).in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList())));
GeneratrixWire generatrixWire = generatrixWireMap.get(key);
String effectIds = temIntegrity.stream().map(RStatIntegrityD::getLineIndex).collect(Collectors.joining(StrUtil.COMMA));
@@ -103,27 +108,27 @@ public class RDimBusUpDServiceImpl extends MppServiceImpl<RDimBusUpDMapper, RDim
List<RStatDataVDPO> vList = vMap.get(maxR.getLineIndex());
temAvg = vList.stream().mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159);
}
if(limtMap.containsKey(maxR.getLineIndex())){
List<RStatLimitRateDPO> statLimitRateDPOList = limtMap.get(maxR.getLineIndex());
for(RStatLimitRateDPO rStatLimitRateDPO: rStatLimitRateDPOList){
RDimBusUpD rDimBusUpD = new RDimBusUpD();
BeanUtil.copyProperties(rStatLimitRateDPO,rDimBusUpD);
rDimBusUpD.setBusId(key);
rDimBusUpD.setMidBusId(generatrixWire.getMidBusId());
rDimBusUpD.setStatisticDate(localDate);
rDimBusUpD.setEffectId(maxR.getLineIndex());
rDimBusUpD.setEffectIds(effectIds);
rDimBusUpD.setVoltageLevel(generatrixWire.getScale());
rDimBusUpD.setV(temAvg);
poList.add(rDimBusUpD);
for(RStatLimitRateDPO rStatLimitRateDPO: statLimitRateDPOList){
RDimBusUpD rDimBusUpD = new RDimBusUpD();
BeanUtil.copyProperties(rStatLimitRateDPO,rDimBusUpD);
rDimBusUpD.setBusId(key);
rDimBusUpD.setMidBusId(generatrixWire.getMidBusId());
rDimBusUpD.setStatisticDate(localDate);
rDimBusUpD.setEffectId(maxR.getLineIndex());
rDimBusUpD.setEffectIds(effectIds);
rDimBusUpD.setVoltageLevel(generatrixWire.getScale());
rDimBusUpD.setV(temAvg);
poList.add(rDimBusUpD);
}
}
}
});
this.saveOrUpdateBatchByMultiId(poList);
System.out.println("母线日算法执行时间(S)-----------------------"+timeInterval.intervalSecond());
}
}

View File

@@ -1,12 +1,46 @@
package com.njcn.prepare.harmonic.service.mysql.upload.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.util.StrUtil;
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.pms.pojo.po.GeneratrixWire;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.upload.RDimBusUpY;
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatDataVDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitRateDMapper;
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
import com.njcn.prepare.harmonic.mapper.mysql.upload.RDimBusUpYMapper;
import com.njcn.harmonic.pojo.po.upload.RDimBusUpY;
import com.njcn.prepare.harmonic.service.mysql.upload.IRDimBusUpYService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* <p>
* 母线越限详情 服务实现类
@@ -16,6 +50,103 @@ import org.springframework.stereotype.Service;
* @since 2024-05-09
*/
@Service
@RequiredArgsConstructor
public class RDimBusUpYServiceImpl extends MppServiceImpl<RDimBusUpYMapper, RDimBusUpY> implements IRDimBusUpYService {
private final RStatIntegrityDMapper rStatIntegrityDMapper;
private final DicDataFeignClient dicDataFeignClient;
private final PmsMonitorPOMapper pmsMonitorPOMapper;
private final GeneratrixWireMapper generatrixWireMapper;
private final RStatDataVDMapper rStatDataVDMapper;
private final RStatLimitRateDMapper rStatLimitRateDMapper;
@Override
public void handYear(String date) {
TimeInterval timeInterval = new TimeInterval();
LocalDate localDate = LocalDate.parse(date);
DateTime start = DateUtil.beginOfYear(DateUtil.parse(date, DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.parse(date);
LocalDate statDate = LocalDate.parse(DateUtil.format(start, DatePattern.NORM_DATE_PATTERN));
QueryWrapper<RStatIntegrityD> queryWrapper = new QueryWrapper<>();
queryWrapper.select("line_index","avg(real_time/due_time) as integrityData","avg(real_time) as realTime","avg(due_time) as dueTime").
between("time_id",start,end).last("group by line_index");
List<RStatIntegrityD> rStatIntegrityDList = rStatIntegrityDMapper.selectList(queryWrapper);
//TODO 测试暂时注释
//List<RStatIntegrityD> integrityDList = rStatIntegrityDList.stream().filter(it->it.getIntegrityData()>0.95).collect(Collectors.toList());
DictData dictData = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.RUN.getCode(), DicDataTypeEnum.LINE_STATE.getCode()).getData();
List<Monitor> monitorList = pmsMonitorPOMapper.selectList(new LambdaQueryWrapper<Monitor>().eq(Monitor::getIsUpToGrid,1).eq(Monitor::getMonitorState,dictData.getId()));
List<String> allMonitorIds = monitorList.stream().map(Monitor::getId).distinct().collect(Collectors.toList());
List<String> lineIds = monitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
List<GeneratrixWire> generatrixWireList = generatrixWireMapper.selectList(new LambdaQueryWrapper<GeneratrixWire>().in(GeneratrixWire::getId,lineIds));
Map<String,GeneratrixWire> generatrixWireMap = generatrixWireList.stream().collect(Collectors.toMap(GeneratrixWire::getId, Function.identity()));
List<RStatDataVDPO> rStatDataVDPOList = rStatDataVDMapper.selectList(new QueryWrapper<RStatDataVDPO>()
.select("line_id","phasic_type","avg(rms) as rms").lambda()
.in(RStatDataVDPO::getLineId,allMonitorIds)
.between(RStatDataVDPO::getTime,start,end)
.eq(RStatDataVDPO::getValueType,"AVG")
.in(RStatDataVDPO::getPhasicType, Stream.of("A","B","C").collect(Collectors.toList()))
.groupBy(RStatDataVDPO::getLineId,RStatDataVDPO::getPhasicType));
Map<String,List<RStatDataVDPO>> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getLineId));
StringBuilder stringBuilder = new StringBuilder();
for(int i =2;i<26;i++){
stringBuilder.append(",").append("sum(uharm_").append(i).append("_overtime) as ").append("uharm_").append(i).append("_overtime");
}
List<RStatLimitRateDPO> rStatLimitRateDPOList = rStatLimitRateDMapper.selectList(
new QueryWrapper<RStatLimitRateDPO>().select("my_index as lineId,phasic_type,sum(all_time) as allTime,sum(flicker_all_time) as flickerAllTime,sum(freq_dev_overtime) as freqDevOvertime," +
"sum(voltage_dev_overtime) as voltageDevOvertime,sum(ubalance_overtime) as ubalanceOvertime,sum(flicker_overtime) as flickerOvertime,sum(uaberrance_overtime)as uaberranceOvertime,sum(i_neg_overtime)as i_neg_overtime"+stringBuilder)
.lambda().in(RStatLimitRateDPO::getLineId,allMonitorIds)
.between(RStatLimitRateDPO::getTime,start,end)
.in(RStatLimitRateDPO::getPhasicType,Stream.of("A","B","C").collect(Collectors.toList())).groupBy(RStatLimitRateDPO::getLineId,RStatLimitRateDPO::getPhasicType));
Map<String,List<RStatLimitRateDPO>> limtMap = rStatLimitRateDPOList.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId));
Map<String,List<Monitor>> listMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId));
List<RDimBusUpY> poList = new ArrayList<>();
listMap.forEach((key,val)->{
List<String> monitorIds = val.stream().map(Monitor::getId).collect(Collectors.toList());
List<RStatIntegrityD> temIntegrity = rStatIntegrityDList.stream().filter(it->monitorIds.contains(it.getLineIndex())).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(temIntegrity)){
RStatIntegrityD maxR = temIntegrity.stream().max(Comparator.comparing(RStatIntegrityD::getIntegrityData)).orElse(null);
assert maxR != null;
GeneratrixWire generatrixWire = generatrixWireMap.get(key);
String effectIds = temIntegrity.stream().map(RStatIntegrityD::getLineIndex).collect(Collectors.joining(StrUtil.COMMA));
Double temAvg= 3.14159;
if(vMap.containsKey(maxR.getLineIndex())){
List<RStatDataVDPO> vList = vMap.get(maxR.getLineIndex());
temAvg = vList.stream().mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159);
}
if(limtMap.containsKey(maxR.getLineIndex())){
List<RStatLimitRateDPO> rStatLimitRateDPOS = limtMap.get(maxR.getLineIndex());
for(RStatLimitRateDPO rStatLimitRateDPO: rStatLimitRateDPOS){
RDimBusUpY RDimBusUpY = new RDimBusUpY();
BeanUtil.copyProperties(rStatLimitRateDPO,RDimBusUpY);
RDimBusUpY.setBusId(key);
RDimBusUpY.setMidBusId(generatrixWire.getMidBusId());
RDimBusUpY.setStatisticDate(statDate);
RDimBusUpY.setStatDate(localDate);
RDimBusUpY.setEffectId(maxR.getLineIndex());
RDimBusUpY.setEffectIds(effectIds);
RDimBusUpY.setVoltageLevel(generatrixWire.getScale());
RDimBusUpY.setV(temAvg);
poList.add(RDimBusUpY);
}
}
}
});
this.saveOrUpdateBatchByMultiId(poList);
System.out.println("母线年算法执行时间(S)-----------------------"+timeInterval.intervalSecond());
}
}

View File

@@ -27,5 +27,6 @@ public class PmsRunStatisticTaskRunner implements TimerTaskRunner {
date = DateUtil.format(DateUtil.yesterday(),DatePattern.NORM_DATE_PATTERN);
}
dimBusGlobalFeignClient.runLedgerStatistic(date);
dimBusGlobalFeignClient.dimBusUpEveryDay(date);
}
}