1.pms变电站背景谐波算法

This commit is contained in:
2024-01-29 09:00:59 +08:00
parent aeed170427
commit e1b8cbf639
14 changed files with 271 additions and 146 deletions

View File

@@ -67,7 +67,7 @@ public class Monitor extends BaseEntity {
/**
* 监测线名称
* 监测线名称
*/
private String lineName;

View File

@@ -1,8 +1,13 @@
package com.njcn.device.pms.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
/**
@@ -12,16 +17,19 @@ import java.util.Date;
* @since 2022-11-03 14:16:47
*/
@Data
@TableName(value="r_stat_busbar_harmonic_y")
public class RStatBusbarHarmonicYPO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 母线ID
*/
@MppMultiId
private String busbarId;
/**
* 生成数据的时间,每年统计一次
*/
private Date dataDate;
@MppMultiId
private LocalDate dataDate;
/**
* 电压有效值最大
*/
@@ -37,6 +45,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 电压有效值95概率大值
*/
@TableField(value = "v_effective_95")
private Double vEffective95;
/**
* 电压总谐波畸变率最大
@@ -53,6 +62,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 电压总谐波畸变率95概率大值
*/
@TableField(value = "v_thd_95")
private Double vThd95;
/**
* 三相电压不平衡最大
@@ -69,6 +79,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 三相电压不平衡95概率大值
*/
@TableField(value = "unbalance_95")
private Double unbalance95;
/**
* 闪变最大
@@ -85,6 +96,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
/**
* 闪变95概率大值
*/
@TableField(value = "flicker_95")
private Double flicker95;
}

View File

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
/**
@@ -65,7 +66,7 @@ public class RStatBusbarHarmonicYVO implements Serializable {
* 生成数据的时间,每年统计一次
*/
@ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次")
private Date dataDate;
private LocalDate dataDate;
/**
* 电压有效最大值

View File

@@ -363,6 +363,20 @@ public class CommTerminalController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
/**
* pms获取指定单位下面的母线以及母线下面的监测点信息
* @author cdf
* @date 2024/1/26
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getBusBarAndHisMonitor")
@ApiOperation("pms获取指定单位下面的母线以及母线下面的监测点信息")
public HttpResult<List<BusBarAndHisMonitorDTO>> getBusBarAndHisMonitor() {
String methodDescribe = getMethodDescribe("getBusBarAndHisMonitor");
List<BusBarAndHisMonitorDTO> busBarAndHisMonitorDTOList = commTerminalService.getBusBarAndHisMonitor();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, busBarAndHisMonitorDTOList, methodDescribe);
}
/**
* 用于返回pq 还是pms系统

View File

@@ -281,40 +281,6 @@ public class PmsDistributionMonitorController extends BaseController {
}
/**
* 批量同步台区到配网表
* @author cdf
* @date 2023/7/24
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/batchOpDistributionArea")
@ApiOperation("批量同步台区到配网表")
public HttpResult<Boolean> batchOpDistributionArea() {
String methodDescribe = getMethodDescribe("batchOpDistributionArea");
boolean result = iDistributionMonitorService.batchOpDistributionArea();
if(result){
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, null, methodDescribe);
}
/**
* 批量给配网监测点录入单位id
* @author cdf
* @date 2023/9/20
*/
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/disMonitorWriteOrgId")
@ApiOperation("批量修改配网里的单位")
public HttpResult<Boolean> disMonitorWriteOrgId() {
String methodDescribe = getMethodDescribe("disMonitorWriteOrgId");
iDistributionMonitorService.disMonitorWriteOrgId();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
@ApiOperation(value = "将用户数据导入到配网表中")
@PostMapping("/savePmsDistributionUser")
public HttpResult<Boolean> savePmsDistributionUser() {

View File

@@ -1,9 +1,11 @@
package com.njcn.device.pms.service.ledgerManger;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.pojo.dto.StatisticsMonitor;
import com.njcn.device.biz.pojo.dto.*;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@@ -103,4 +105,7 @@ public interface CommTerminalService {
* @date 2023/10/23
*/
Map<String,String> getCustomDetailByLineId(String id);
List<BusBarAndHisMonitorDTO> getBusBarAndHisMonitor();
}

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.enums.common.ServerEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
@@ -768,4 +769,24 @@ public class CommTerminalServiceImpl implements CommTerminalService {
return monitorMapper.getCustomDetailByLineId(id);
}
@Override
public List<BusBarAndHisMonitorDTO> getBusBarAndHisMonitor() {
List<BusBarAndHisMonitorDTO> result = new ArrayList<>();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_STATE.getName(),DicDataEnum.RUN.getName()).getData();
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(Monitor::getId,Monitor::getLineId).eq(Monitor::getMonitorState,dictData.getId())
.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode());
List<Monitor> monitorList = monitorMapper.selectList(lambdaQueryWrapper);
Map<String,List<Monitor>> busBarMap = monitorList.stream().collect(Collectors.groupingBy(Monitor::getLineId));
busBarMap.forEach((key,val)->{
BusBarAndHisMonitorDTO busBarAndHisMonitorDTO = new BusBarAndHisMonitorDTO();
busBarAndHisMonitorDTO.setBusBarId(key);
busBarAndHisMonitorDTO.setMonitorIds(val.stream().map(Monitor::getId).collect(Collectors.toList()));
result.add(busBarAndHisMonitorDTO);
});
return result;
}
}

View File

@@ -116,16 +116,6 @@ public interface IDistributionMonitorService extends IMppService<DistributionMon
*/
List<String> getBaseDisMonitorIds(List<String> orgIds,List<String> monitorSortIds);
/**
* 批量同步台区到配网表
* @author cdf
* @date 2023/7/24
*/
Boolean batchOpDistributionArea();
Boolean disMonitorWriteOrgId();
/**
* 批量同步发电用户到配网表
* @return

View File

@@ -464,104 +464,6 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
return distributionMonitorMapper.getBaseDisMonitorIds(orgIds,monitorSortIds);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean batchOpDistributionArea() {
TimeInterval timeInterval = new TimeInterval();
DictData dictData = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.LINE_SORT.getName(),DicDataEnum.TWO_LINE.getName()).getData();
int count = powerDistributionareaMapper.selectCount(new LambdaQueryWrapper<>());
int calCount = 0;
if (count > 0) {
calCount = count / 10000 + 1;
for (int i = 0; i < calCount; i++) {
int page = i * 10000;
List<PowerDistributionarea> powerDistributionareaList = powerDistributionareaMapper.selectList(
new LambdaQueryWrapper<PowerDistributionarea>()
.select(PowerDistributionarea::getId,
PowerDistributionarea::getState,
PowerDistributionarea::getVoltageLevel,
PowerDistributionarea::getOrgId,
PowerDistributionarea::getPowerStationId,
PowerDistributionarea::getLineId
)
.last(true, "limit " + page+ ",10000"));
List<DistributionMonitor> poList= new ArrayList<>();
for(PowerDistributionarea powerDistributionarea:powerDistributionareaList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorSort(dictData.getId());
distributionMonitor.setMonitorId(powerDistributionarea.getId());
distributionMonitor.setOrgId(powerDistributionarea.getOrgId());
distributionMonitor.setStatus(DataStateEnum.ENABLE.getCode());
distributionMonitor.setMonitorState(powerDistributionarea.getState());
distributionMonitor.setVoltageLevel(powerDistributionarea.getVoltageLevel());
distributionMonitor.setCreatedDate(LocalDateTime.now());
distributionMonitor.setIfPowerUser(0);
distributionMonitor.setPowerStationId(powerDistributionarea.getPowerStationId());
distributionMonitor.setLineId(powerDistributionarea.getLineId());
poList.add(distributionMonitor);
}
this.saveOrUpdateBatchByMultiId(poList);
}
}
return true;
}
@Override
public Boolean disMonitorWriteOrgId() {
List<DistributionMonitor> distributionMonitorList = this.list();
if(CollectionUtil.isNotEmpty(distributionMonitorList)){
Map<String,List<DistributionMonitor>> map = distributionMonitorList.stream().collect(Collectors.groupingBy(DistributionMonitor::getMonitorSort));
List<DistributionMonitor> po = new ArrayList<>();
map.forEach((key,val)->{
if(key.equals("78a96acb276a5fe9d6eff737fdf1973f")){
List<DistributionMonitor> one = map.get("78a96acb276a5fe9d6eff737fdf1973f");
List<String> oneIds = one.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<Monitor> monitorList = monitorMapper.selectList(new LambdaQueryWrapper<Monitor>().in(Monitor::getId,oneIds));
for(Monitor monitor:monitorList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorId(monitor.getId());
distributionMonitor.setOrgId(monitor.getOrgId());
LambdaUpdateWrapper<DistributionMonitor> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(DistributionMonitor::getOrgId,distributionMonitor.getOrgId()).eq(DistributionMonitor::getMonitorId,distributionMonitor.getMonitorId());
this.update(updateWrapper);
}
}else if(key.equals("a5696acb276a5fe9d6eff74fdf1973f")){
List<DistributionMonitor> two = map.get("a5696acb276a5fe9d6eff74fdf1973f");
List<String> twoIds = two.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<PowerDistributionarea> monitorList = powerDistributionareaMapper.selectList(new LambdaQueryWrapper<PowerDistributionarea>().in(PowerDistributionarea::getId,twoIds));
for(PowerDistributionarea monitor:monitorList){
DistributionMonitor distributionMonitor = new DistributionMonitor();
distributionMonitor.setMonitorId(monitor.getId());
distributionMonitor.setOrgId(monitor.getOrgId());
LambdaUpdateWrapper<DistributionMonitor> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(DistributionMonitor::getOrgId,distributionMonitor.getOrgId()).eq(DistributionMonitor::getMonitorId,distributionMonitor.getMonitorId());
this.update(updateWrapper);
}
}else {
List<DistributionMonitor> two = map.get("a5696acb276a5fe9d6eff74fdf1973f");
List<String> twoIds = two.stream().map(DistributionMonitor::getMonitorId).distinct().collect(Collectors.toList());
List<PowerDistributionarea> monitorList = powerDistributionareaMapper.selectList(new LambdaQueryWrapper<PowerDistributionarea>().in(PowerDistributionarea::getId,twoIds));
}
});
}
return true;
}
@Override
@Transactional(rollbackFor = Exception.class)