1.pms变电站背景谐波算法
This commit is contained in:
@@ -67,7 +67,7 @@ public class Monitor extends BaseEntity {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监测线路名称
|
* 监测母线名称
|
||||||
*/
|
*/
|
||||||
private String lineName;
|
private String lineName;
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
package com.njcn.device.pms.pojo.po;
|
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 lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12,16 +17,19 @@ import java.util.Date;
|
|||||||
* @since 2022-11-03 14:16:47
|
* @since 2022-11-03 14:16:47
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@TableName(value="r_stat_busbar_harmonic_y")
|
||||||
public class RStatBusbarHarmonicYPO implements Serializable {
|
public class RStatBusbarHarmonicYPO implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
/**
|
/**
|
||||||
* 母线ID
|
* 母线ID
|
||||||
*/
|
*/
|
||||||
|
@MppMultiId
|
||||||
private String busbarId;
|
private String busbarId;
|
||||||
/**
|
/**
|
||||||
* 生成数据的时间,每年统计一次
|
* 生成数据的时间,每年统计一次
|
||||||
*/
|
*/
|
||||||
private Date dataDate;
|
@MppMultiId
|
||||||
|
private LocalDate dataDate;
|
||||||
/**
|
/**
|
||||||
* 电压有效值最大
|
* 电压有效值最大
|
||||||
*/
|
*/
|
||||||
@@ -37,6 +45,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 电压有效值95概率大值
|
* 电压有效值95概率大值
|
||||||
*/
|
*/
|
||||||
|
@TableField(value = "v_effective_95")
|
||||||
private Double vEffective95;
|
private Double vEffective95;
|
||||||
/**
|
/**
|
||||||
* 电压总谐波畸变率最大
|
* 电压总谐波畸变率最大
|
||||||
@@ -53,6 +62,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 电压总谐波畸变率95概率大值
|
* 电压总谐波畸变率95概率大值
|
||||||
*/
|
*/
|
||||||
|
@TableField(value = "v_thd_95")
|
||||||
private Double vThd95;
|
private Double vThd95;
|
||||||
/**
|
/**
|
||||||
* 三相电压不平衡最大
|
* 三相电压不平衡最大
|
||||||
@@ -69,6 +79,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 三相电压不平衡95概率大值
|
* 三相电压不平衡95概率大值
|
||||||
*/
|
*/
|
||||||
|
@TableField(value = "unbalance_95")
|
||||||
private Double unbalance95;
|
private Double unbalance95;
|
||||||
/**
|
/**
|
||||||
* 闪变最大
|
* 闪变最大
|
||||||
@@ -85,6 +96,7 @@ public class RStatBusbarHarmonicYPO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 闪变95概率大值
|
* 闪变95概率大值
|
||||||
*/
|
*/
|
||||||
|
@TableField(value = "flicker_95")
|
||||||
private Double flicker95;
|
private Double flicker95;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,7 +66,7 @@ public class RStatBusbarHarmonicYVO implements Serializable {
|
|||||||
* 生成数据的时间,每年统计一次
|
* 生成数据的时间,每年统计一次
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次")
|
@ApiModelProperty(name = "dataDate", value = "生成数据的时间,每年统计一次")
|
||||||
private Date dataDate;
|
private LocalDate dataDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 电压有效最大值
|
* 电压有效最大值
|
||||||
|
|||||||
@@ -363,6 +363,20 @@ public class CommTerminalController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
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系统
|
* 用于返回pq 还是pms系统
|
||||||
|
|||||||
@@ -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 = "将用户数据导入到配网表中")
|
@ApiOperation(value = "将用户数据导入到配网表中")
|
||||||
@PostMapping("/savePmsDistributionUser")
|
@PostMapping("/savePmsDistributionUser")
|
||||||
public HttpResult<Boolean> savePmsDistributionUser() {
|
public HttpResult<Boolean> savePmsDistributionUser() {
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.njcn.device.pms.service.ledgerManger;
|
package com.njcn.device.pms.service.ledgerManger;
|
||||||
|
|
||||||
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
|
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.StatisticsMonitor;
|
||||||
import com.njcn.device.biz.pojo.dto.*;
|
import com.njcn.device.biz.pojo.dto.*;
|
||||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -103,4 +105,7 @@ public interface CommTerminalService {
|
|||||||
* @date 2023/10/23
|
* @date 2023/10/23
|
||||||
*/
|
*/
|
||||||
Map<String,String> getCustomDetailByLineId(String id);
|
Map<String,String> getCustomDetailByLineId(String id);
|
||||||
|
|
||||||
|
|
||||||
|
List<BusBarAndHisMonitorDTO> getBusBarAndHisMonitor();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.common.ServerEnum;
|
||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
@@ -768,4 +769,24 @@ public class CommTerminalServiceImpl implements CommTerminalService {
|
|||||||
return monitorMapper.getCustomDetailByLineId(id);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,16 +116,6 @@ public interface IDistributionMonitorService extends IMppService<DistributionMon
|
|||||||
*/
|
*/
|
||||||
List<String> getBaseDisMonitorIds(List<String> orgIds,List<String> monitorSortIds);
|
List<String> getBaseDisMonitorIds(List<String> orgIds,List<String> monitorSortIds);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 批量同步台区到配网表
|
|
||||||
* @author cdf
|
|
||||||
* @date 2023/7/24
|
|
||||||
*/
|
|
||||||
Boolean batchOpDistributionArea();
|
|
||||||
|
|
||||||
Boolean disMonitorWriteOrgId();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量同步发电用户到配网表
|
* 批量同步发电用户到配网表
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -464,104 +464,6 @@ public class DistributionMonitorServiceImpl extends MppServiceImpl<DistributionM
|
|||||||
return distributionMonitorMapper.getBaseDisMonitorIds(orgIds,monitorSortIds);
|
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
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.njcn.prepare.executor;
|
|||||||
|
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.busbar.IStationBusBarReportService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
|
||||||
@@ -25,6 +26,8 @@ public class BusBarExecutor extends BaseExecutor{
|
|||||||
private final IRDimVoltageMService irDimVoltageMService;
|
private final IRDimVoltageMService irDimVoltageMService;
|
||||||
private final IRDimVoltageYService irDimVoltageYService;
|
private final IRDimVoltageYService irDimVoltageYService;
|
||||||
|
|
||||||
|
private final IStationBusBarReportService iStationBusBarReportService;
|
||||||
|
|
||||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
|
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||||
public boolean rBusbarVoltageAccess(NodeComponent bindCmp) {
|
public boolean rBusbarVoltageAccess(NodeComponent bindCmp) {
|
||||||
return isAccess(bindCmp);
|
return isAccess(bindCmp);
|
||||||
@@ -51,4 +54,19 @@ public class BusBarExecutor extends BaseExecutor{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatBusbarHarmonicY", nodeType = NodeTypeEnum.COMMON)
|
||||||
|
public boolean rStatBusbarHarmonicYAccess(NodeComponent bindCmp) {
|
||||||
|
return isAccess(bindCmp);
|
||||||
|
}
|
||||||
|
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatBusbarHarmonicY", nodeType = NodeTypeEnum.COMMON)
|
||||||
|
public void rStatBusbarHarmonicYProcess(NodeComponent bindCmp) {
|
||||||
|
CalculatedParam<DeptGetBusBarDTO> calculatedParam = bindCmp.getRequestData();
|
||||||
|
|
||||||
|
//年表
|
||||||
|
iStationBusBarReportService.handleEveryDayAllYear(calculatedParam);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.njcn.prepare.harmonic.mapper.mysql.busbar;
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||||
|
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatComassesDPO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2024/1/25
|
||||||
|
*/
|
||||||
|
public interface StationBusBarReportMapper extends MppBaseMapper<RStatBusbarHarmonicYPO> {
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.njcn.prepare.harmonic.service.mysql.busbar;
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
|
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
|
||||||
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变电站母线电压指标
|
||||||
|
* @author cdf
|
||||||
|
* @date 2024/1/25
|
||||||
|
*/
|
||||||
|
public interface IStationBusBarReportService extends IMppService<RStatBusbarHarmonicYPO> {
|
||||||
|
|
||||||
|
|
||||||
|
void handleEveryDayAllYear(CalculatedParam<?> calculatedParam);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
package com.njcn.prepare.harmonic.service.mysql.busbar.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
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.BusBarAndHisMonitorDTO;
|
||||||
|
import com.njcn.device.pms.pojo.po.RStatBusbarHarmonicYPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.RStatDataVD;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataPltDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
||||||
|
import com.njcn.prepare.harmonic.mapper.mysql.busbar.StationBusBarReportMapper;
|
||||||
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.busbar.IStationBusBarReportService;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataPltDService;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.day.IRStatDataVDService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2024/1/25
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class StationBusBarReportServiceImpl extends MppServiceImpl<StationBusBarReportMapper, RStatBusbarHarmonicYPO> implements IStationBusBarReportService {
|
||||||
|
|
||||||
|
private final CommTerminalGeneralClient commTerminalGeneralClient;
|
||||||
|
|
||||||
|
private final IRStatDataVDService irStatDataVDService;
|
||||||
|
|
||||||
|
private final IRStatDataPltDService irStatDataPltDService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleEveryDayAllYear(CalculatedParam<?> calculatedParam) {
|
||||||
|
DateTime date = DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||||
|
String begin = DateUtil.format(DateUtil.beginOfYear(date), DatePattern.NORM_DATE_PATTERN);
|
||||||
|
List<BusBarAndHisMonitorDTO> busBatList = commTerminalGeneralClient.getBusBarAndHisMonitor().getData();
|
||||||
|
|
||||||
|
List<RStatBusbarHarmonicYPO> resultPoList = new ArrayList<>();
|
||||||
|
for (BusBarAndHisMonitorDTO busBarAndHisMonitorDTO : busBatList) {
|
||||||
|
RStatBusbarHarmonicYPO rStatBusbarHarmonicYPO = new RStatBusbarHarmonicYPO();
|
||||||
|
rStatBusbarHarmonicYPO.setBusbarId(busBarAndHisMonitorDTO.getBusBarId());
|
||||||
|
rStatBusbarHarmonicYPO.setDataDate(LocalDate.parse(begin));
|
||||||
|
|
||||||
|
LambdaQueryWrapper<RStatDataVDPO> vdQuery = new LambdaQueryWrapper<>();
|
||||||
|
vdQuery.select(RStatDataVDPO::getLineId, RStatDataVDPO::getPhasicType, RStatDataVDPO::getVThd, RStatDataVDPO::getRms, RStatDataVDPO::getValueType, RStatDataVDPO::getVUnbalance)
|
||||||
|
.in(RStatDataVDPO::getLineId, busBarAndHisMonitorDTO.getMonitorIds()).between(RStatDataVDPO::getTime, begin, calculatedParam.getDataDate());
|
||||||
|
List<RStatDataVDPO> rStatDataVDPOList = irStatDataVDService.list(vdQuery);
|
||||||
|
|
||||||
|
Map<String, List<RStatDataVDPO>> vMap = rStatDataVDPOList.stream().collect(Collectors.groupingBy(RStatDataVDPO::getValueType));
|
||||||
|
if (vMap.containsKey("MAX")) {
|
||||||
|
List<RStatDataVDPO> maxList = vMap.get("MAX");
|
||||||
|
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveMax(rms);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdMax(thd);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceMax(un);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveMax(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdMax(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceMax(3.14159);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vMap.containsKey("MIN")) {
|
||||||
|
List<RStatDataVDPO> maxList = vMap.get("MIN");
|
||||||
|
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).min(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).min(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).min(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveMin(rms);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdMin(thd);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceMin(un);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveMin(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdMin(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceMin(3.14159);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vMap.containsKey("AVG")) {
|
||||||
|
List<RStatDataVDPO> maxList = vMap.get("AVG");
|
||||||
|
Double rms = maxList.stream().filter(item -> !item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getRms).average().orElse(3.14159);
|
||||||
|
Double thd = maxList.stream().filter(item -> item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getVThd).average().orElse(3.14159);
|
||||||
|
Double un = maxList.stream().filter(item -> item.getPhasicType().equals("T")).mapToDouble(RStatDataVDPO::getVUnbalance).average().orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveAvg(rms);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdAvg(thd);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceAvg(un);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setVEffectiveAvg(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVThdAvg(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalanceAvg(3.14159);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (vMap.containsKey("CP95")) {
|
||||||
|
List<RStatDataVDPO> cp95List = vMap.get("CP95");
|
||||||
|
Double rms = cp95List.stream().filter(item -> !item.getPhasicType().equals("T")).map(RStatDataVDPO::getRms).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double thd = cp95List.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVThd).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
Double un = cp95List.stream().filter(item -> item.getPhasicType().equals("T")).map(RStatDataVDPO::getVUnbalance).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVEffective95(rms);
|
||||||
|
rStatBusbarHarmonicYPO.setVThd95(thd);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalance95(un);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setVEffective95(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setVThd95(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setUnbalance95(3.14159);
|
||||||
|
}
|
||||||
|
|
||||||
|
//长时闪变
|
||||||
|
LambdaQueryWrapper<RStatDataPltDPO> pltdQuery = new LambdaQueryWrapper<>();
|
||||||
|
pltdQuery.select(RStatDataPltDPO::getPlt,RStatDataPltDPO::getPhaseType,RStatDataPltDPO::getValueType)
|
||||||
|
.in(RStatDataPltDPO::getLineId, busBarAndHisMonitorDTO.getMonitorIds()).between(RStatDataPltDPO::getTime, begin,calculatedParam.getDataDate());
|
||||||
|
List<RStatDataPltDPO> pltList = irStatDataPltDService.list(pltdQuery);
|
||||||
|
Map<String, List<RStatDataPltDPO>> pltMap = pltList.stream().collect(Collectors.groupingBy(RStatDataPltDPO::getValueType));
|
||||||
|
if (pltMap.containsKey("MAX")) {
|
||||||
|
List<RStatDataPltDPO> maxList = pltMap.get("MAX");
|
||||||
|
Double plt = maxList.stream().map(RStatDataPltDPO::getPlt).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerMax(plt);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerMax(3.14159);
|
||||||
|
}
|
||||||
|
if (pltMap.containsKey("MIN")) {
|
||||||
|
List<RStatDataPltDPO> minList = pltMap.get("MIN");
|
||||||
|
Double plt = minList.stream().map(RStatDataPltDPO::getPlt).min(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerMin(plt);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerMin(3.14159);
|
||||||
|
}
|
||||||
|
if (pltMap.containsKey("AVG")) {
|
||||||
|
List<RStatDataPltDPO> maxList = pltMap.get("AVG");
|
||||||
|
Double plt = maxList.stream().mapToDouble(RStatDataPltDPO::getPlt).average().orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerAvg(plt);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setFlickerAvg(3.14159);
|
||||||
|
}
|
||||||
|
if (pltMap.containsKey("CP95")) {
|
||||||
|
List<RStatDataPltDPO> cp95List = pltMap.get("CP95");
|
||||||
|
Double plt = cp95List.stream().map(RStatDataPltDPO::getPlt).max(Comparator.comparing(Function.identity())).orElse(3.14159);
|
||||||
|
rStatBusbarHarmonicYPO.setFlicker95(plt);
|
||||||
|
}else {
|
||||||
|
rStatBusbarHarmonicYPO.setFlicker95(3.14159);
|
||||||
|
}
|
||||||
|
resultPoList.add(rStatBusbarHarmonicYPO);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.saveOrUpdateBatchByMultiId(resultPoList);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.day;
|
package com.njcn.prepare.harmonic.service.mysql.day;
|
||||||
|
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
import com.njcn.harmonic.pojo.po.day.RStatDataFlickerDPO;
|
import com.njcn.harmonic.pojo.po.day.RStatDataFlickerDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatDataVDPO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface IRStatDataFlickerDService {
|
public interface IRStatDataFlickerDService extends IMppService<RStatDataFlickerDPO> {
|
||||||
|
|
||||||
void insert(List<RStatDataFlickerDPO> list);
|
void insert(List<RStatDataFlickerDPO> list);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user