代码调整
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
package com.njcn.device.pms.pojo.po;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.njcn.db.bo.BaseEntity;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 每日变电站-母线数据总条目表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @since 2023-11-15
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@TableName("pms_count_ledger")
|
||||||
|
public class PmsCountLedger extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 日期
|
||||||
|
*/
|
||||||
|
private LocalDateTime date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行单位
|
||||||
|
*/
|
||||||
|
private String section;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变电站总数
|
||||||
|
*/
|
||||||
|
private Integer subCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 母线总数
|
||||||
|
*/
|
||||||
|
private Integer subvCount;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
package com.njcn.device.pms.pojo.po;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.njcn.db.bo.BaseEntity;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 变电站-母线数据中间表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @since 2023-11-15
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@TableName("pms_mid_ledger")
|
||||||
|
public class PmsMidLedger extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Id
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节点(0为根节点)
|
||||||
|
*/
|
||||||
|
private String pid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上层所有节点
|
||||||
|
*/
|
||||||
|
private String pids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行单位
|
||||||
|
*/
|
||||||
|
private String section;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 等级:0-变电站;1-母线;
|
||||||
|
*/
|
||||||
|
private Boolean level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序(默认为0,有特殊排序需要时候人为输入)
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态 0-删除;1-正常;默认正常
|
||||||
|
*/
|
||||||
|
private Integer state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 运行状态
|
||||||
|
*/
|
||||||
|
private String runStatus;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.njcn.harmonic.pojo.po.dim;
|
package com.njcn.harmonic.pojo.po.dim;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
|
||||||
import com.njcn.db.bo.BaseEntity;
|
import com.njcn.db.bo.BaseEntity;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
@@ -26,11 +27,13 @@ public class RDimBusGlobalD extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 单位code
|
* 单位code
|
||||||
*/
|
*/
|
||||||
|
@MppMultiId
|
||||||
private String orgId;
|
private String orgId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计时间 yyyy-mm-dd
|
* 统计时间 yyyy-mm-dd
|
||||||
*/
|
*/
|
||||||
|
@MppMultiId
|
||||||
private LocalDate statisDate;
|
private LocalDate statisDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,6 +51,23 @@ public class RDimBusGlobalD extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Float limitAvgRate;
|
private Float limitAvgRate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站监测率(%)
|
||||||
|
*/
|
||||||
|
private Float stationMonitorRate;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站指标超标或监测到暂态指标的变电站/换流站占比(%)
|
||||||
|
*/
|
||||||
|
private Float stationLimitRate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站指标超标或监测到暂态指标的变电站/换流站平均占比(%)
|
||||||
|
*/
|
||||||
|
private Float stationLimitAvgRate;
|
||||||
|
|
||||||
|
|
||||||
private Integer state;
|
private Integer state;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -230,4 +230,56 @@ public class ExecutionCenter extends BaseController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pms dim母线,电站运行情况
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/11/17
|
||||||
|
*/
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@ApiOperation("变电站算法执行链")
|
||||||
|
@PostMapping("/pmsdimexecutor")
|
||||||
|
public void pmsDimExecutor(@RequestBody BaseParam baseParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("pmsdimexecutor");
|
||||||
|
//手动判断参数是否合法,
|
||||||
|
CalculatedParam<String> calculatedParam = judgeExecuteParam(baseParam);
|
||||||
|
// 测点索引
|
||||||
|
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||||
|
Dept data = deptFeignClient.getRootDept().getData();
|
||||||
|
deptGetLineParam.setDeptId(data.getId());
|
||||||
|
List<DeptGetSubStationDTO> data1 = commTerminalGeneralClient.deptSubStation(deptGetLineParam).getData();
|
||||||
|
List<String> stationIds = new ArrayList<>();
|
||||||
|
for (DeptGetSubStationDTO deptGetSubStationDTO : data1) {
|
||||||
|
Collection<String> union = CollectionUtils.union(Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList<String>()),
|
||||||
|
Optional.ofNullable(deptGetSubStationDTO.getStationIds()).orElse(new ArrayList<String>()));
|
||||||
|
List<String> collect = union.stream().distinct().collect(Collectors.toList());
|
||||||
|
stationIds.addAll(collect);
|
||||||
|
}
|
||||||
|
stationIds = stationIds.stream().distinct().collect(Collectors.toList());
|
||||||
|
calculatedParam.setIdList(stationIds);
|
||||||
|
}
|
||||||
|
LiteflowResponse liteflowResponse;
|
||||||
|
if (baseParam.isRepair()) {
|
||||||
|
//补招时,起始日期、截止日期必填
|
||||||
|
DateTime startDate = DateUtil.parse(baseParam.getBeginTime(), DatePattern.NORM_DATE_FORMAT);
|
||||||
|
DateTime endDate = DateUtil.parse(baseParam.getEndTime(), DatePattern.NORM_DATE_FORMAT);
|
||||||
|
long betweenDay = DateUtil.betweenDay(startDate, endDate, true);
|
||||||
|
//递增日期执行算法链
|
||||||
|
for (int i = 0; i < betweenDay; i++) {
|
||||||
|
if (i != 0) {
|
||||||
|
startDate = DateUtil.offsetDay(startDate, 1);
|
||||||
|
}
|
||||||
|
calculatedParam.setDataDate(DateUtil.format(startDate, DatePattern.NORM_DATE_PATTERN));
|
||||||
|
liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam);
|
||||||
|
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//非补招
|
||||||
|
liteflowResponse = flowExecutor.execute2Resp("sub_station", calculatedParam);
|
||||||
|
dealResponse(calculatedParam, liteflowResponse, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package com.njcn.prepare.executor;
|
||||||
|
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService;
|
||||||
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
|
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||||
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
|
import com.yomahub.liteflow.enums.LiteFlowMethodEnum;
|
||||||
|
import com.yomahub.liteflow.enums.NodeTypeEnum;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/11/17
|
||||||
|
*/
|
||||||
|
@LiteflowComponent
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class PmsDimExecutor extends BaseExecutor{
|
||||||
|
|
||||||
|
private final IRDimBusGlobalDService irDimBusGlobalDService;
|
||||||
|
|
||||||
|
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "dimBusGlobalAccess", nodeType = NodeTypeEnum.COMMON)
|
||||||
|
public boolean dimBusGlobalAccess(NodeComponent bindCmp) {
|
||||||
|
return isAccess(bindCmp);
|
||||||
|
}
|
||||||
|
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "dimBusGlobalAccess", nodeType = NodeTypeEnum.COMMON)
|
||||||
|
public void dimBusGlobalProcess(NodeComponent bindCmp) {
|
||||||
|
irDimBusGlobalDService.globalCalBusBarDay(bindCmp.getRequestData());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.njcn.device.pms.pojo.po.PmsCountLedger;
|
||||||
|
import com.njcn.device.pms.pojo.po.PmsMidLedger;
|
||||||
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 每日变电站-母线数据总条目表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author hongawen
|
||||||
|
* @since 2023-11-15
|
||||||
|
*/
|
||||||
|
public interface PmsCountLedgerMapper extends BaseMapper<PmsCountLedger> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取最新的一组数据
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/11/17
|
||||||
|
*/
|
||||||
|
List<PmsCountLedger> newDateData();
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.njcn.device.pms.pojo.po.PmsMidLedger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 变电站-母线数据中间表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author hongawen
|
||||||
|
* @since 2023-11-15
|
||||||
|
*/
|
||||||
|
public interface PmsMidLedgerMapper extends BaseMapper<PmsMidLedger> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
|||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12,6 +13,6 @@ import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
|||||||
* @author hongawen
|
* @author hongawen
|
||||||
* @since 2023-11-14
|
* @since 2023-11-14
|
||||||
*/
|
*/
|
||||||
public interface RDimBusGlobalDMapper extends BaseMapper<RDimBusGlobalD> {
|
public interface RDimBusGlobalDMapper extends MppBaseMapper<RDimBusGlobalD> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.dim.PmsCountLedgerMapper">
|
||||||
|
|
||||||
|
<select id="newDateData" resultType="PmsCountLedger">
|
||||||
|
SELECT
|
||||||
|
date,
|
||||||
|
Section,
|
||||||
|
Sub_Count,
|
||||||
|
Subv_Count
|
||||||
|
FROM
|
||||||
|
( SELECT * FROM pms_count_ledger ORDER BY date DESC ) t
|
||||||
|
GROUP BY
|
||||||
|
date,
|
||||||
|
Section
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.dim;
|
|||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
|
|
||||||
@@ -13,8 +14,8 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
|||||||
* @author hongawen
|
* @author hongawen
|
||||||
* @since 2023-11-14
|
* @since 2023-11-14
|
||||||
*/
|
*/
|
||||||
public interface IRDimBusGlobalDService extends IService<RDimBusGlobalD> {
|
public interface IRDimBusGlobalDService extends IMppService<RDimBusGlobalD> {
|
||||||
|
|
||||||
public void globalCalBusBar(CalculatedParam calculatedParam);
|
public void globalCalBusBarDay(CalculatedParam calculatedParam);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,27 +4,42 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
import com.njcn.common.pojo.enums.common.DataStateEnum;
|
||||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
|
||||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||||
import com.njcn.device.pms.pojo.po.Monitor;
|
import com.njcn.device.pms.pojo.po.GeneratrixWire;
|
||||||
|
import com.njcn.device.pms.pojo.po.PmsCountLedger;
|
||||||
|
import com.njcn.device.pms.pojo.po.PmsMidLedger;
|
||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
||||||
|
import com.njcn.device.pms.pojo.po.Monitor;
|
||||||
|
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.day.RStatLimitTargetDPO;
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusGlobalD;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
|
||||||
|
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatLimitTargetDMapper;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
|
||||||
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsCountLedgerMapper;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusGlobalDMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusGlobalDMapper;
|
||||||
|
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimBusGlobalDService;
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
import com.njcn.user.api.DeptFeignClient;
|
||||||
import com.njcn.user.pojo.po.Dept;
|
import com.njcn.user.pojo.po.Dept;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,7 +52,7 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class RDimBusGlobalDServiceImpl extends ServiceImpl<RDimBusGlobalDMapper, RDimBusGlobalD> implements IRDimBusGlobalDService {
|
public class RDimBusGlobalDServiceImpl extends MppServiceImpl<RDimBusGlobalDMapper, RDimBusGlobalD> implements IRDimBusGlobalDService {
|
||||||
|
|
||||||
private final DeptFeignClient deptFeignClient;
|
private final DeptFeignClient deptFeignClient;
|
||||||
|
|
||||||
@@ -49,19 +64,26 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl<RDimBusGlobalDMapper,
|
|||||||
|
|
||||||
private final PmsMonitorPOMapper pmsMonitorPOMapper;
|
private final PmsMonitorPOMapper pmsMonitorPOMapper;
|
||||||
|
|
||||||
|
private final RStatLimitTargetDMapper rStatLimitTargetDMapper;
|
||||||
|
|
||||||
|
private final RMpEventDetailDMapper rMpEventDetailDMapper;
|
||||||
|
|
||||||
|
private final PmsCountLedgerMapper pmsCountLedgerMapper;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 本算法只有pms使用到,只针对pms主网测点
|
* 本算法只有pms使用到,只针对pms主网测点
|
||||||
|
*
|
||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/11/15
|
* @date 2023/11/15
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void globalCalBusBar(CalculatedParam calculatedParam) {
|
public void globalCalBusBarDay(CalculatedParam calculatedParam) {
|
||||||
List<RDimBusGlobalD> poList = new ArrayList<>();
|
List<RDimBusGlobalD> poList = new ArrayList<>();
|
||||||
|
|
||||||
LocalDate date = LocalDate.parse(calculatedParam.getDataDate());
|
LocalDate date = LocalDate.parse(calculatedParam.getDataDate());
|
||||||
|
|
||||||
|
List<PmsCountLedger> pmsMidLedgerList = pmsCountLedgerMapper.newDateData();
|
||||||
|
Map<String,PmsCountLedger> map = pmsMidLedgerList.stream().collect(Collectors.toMap(PmsCountLedger::getSection, Function.identity()));
|
||||||
|
|
||||||
Dept dept = deptFeignClient.getRootDept().getData();
|
Dept dept = deptFeignClient.getRootDept().getData();
|
||||||
|
|
||||||
@@ -70,21 +92,34 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl<RDimBusGlobalDMapper,
|
|||||||
deptGetLineParam.setDeptId(dept.getId());
|
deptGetLineParam.setDeptId(dept.getId());
|
||||||
deptGetLineParam.setSystemType(0);
|
deptGetLineParam.setSystemType(0);
|
||||||
List<DeptGetChildrenDTO> deptList = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData();
|
List<DeptGetChildrenDTO> deptList = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData();
|
||||||
for(DeptGetChildrenDTO dto : deptList){
|
for (DeptGetChildrenDTO dto : deptList) {
|
||||||
|
|
||||||
|
Integer stationNum;
|
||||||
|
Integer busBarNum;
|
||||||
|
|
||||||
|
if(map.containsKey(dto.getDeptId())){
|
||||||
|
PmsCountLedger pmsCountLedger = map.get(dto.getDeptId());
|
||||||
|
stationNum = pmsCountLedger.getSubCount();
|
||||||
|
busBarNum = pmsCountLedger.getSubvCount();
|
||||||
|
}else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
RDimBusGlobalD rDimBusGlobalD = new RDimBusGlobalD();
|
RDimBusGlobalD rDimBusGlobalD = new RDimBusGlobalD();
|
||||||
rDimBusGlobalD.setOrgId(dto.getDeptId());
|
rDimBusGlobalD.setOrgId(dto.getDeptId());
|
||||||
rDimBusGlobalD.setStatisDate(date);
|
rDimBusGlobalD.setStatisDate(date);
|
||||||
|
|
||||||
List<String> monitorIds = dto.getLineIds();
|
List<String> monitorIds = dto.getLineIds();
|
||||||
if(CollectionUtil.isNotEmpty(monitorIds)){
|
if (CollectionUtil.isNotEmpty(monitorIds)) {
|
||||||
//先初步筛选出完整性大于95%的
|
//先初步筛选出完整性大于95%的
|
||||||
LambdaQueryWrapper<RStatIntegrityD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<RStatIntegrityD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.in(RStatIntegrityD::getLineIndex,monitorIds).eq(RStatIntegrityD::getTimeId,date);
|
lambdaQueryWrapper.in(RStatIntegrityD::getLineIndex, monitorIds).eq(RStatIntegrityD::getTimeId, date);
|
||||||
List<RStatIntegrityD> integrityDList = rStatIntegrityDMapper.selectList(lambdaQueryWrapper);
|
List<RStatIntegrityD> integrityDList = rStatIntegrityDMapper.selectList(lambdaQueryWrapper);
|
||||||
|
|
||||||
if(CollectionUtil.isEmpty(integrityDList)){
|
if (CollectionUtil.isEmpty(integrityDList)) {
|
||||||
|
rDimBusGlobalD.setMonitorRate(0f);
|
||||||
rDimBusGlobalD.setLimitRate(3.14159f);
|
rDimBusGlobalD.setLimitRate(3.14159f);
|
||||||
rDimBusGlobalD.setMonitorRate(3.14159f);
|
|
||||||
rDimBusGlobalD.setLimitAvgRate(3.14159f);
|
rDimBusGlobalD.setLimitAvgRate(3.14159f);
|
||||||
poList.add(rDimBusGlobalD);
|
poList.add(rDimBusGlobalD);
|
||||||
break;
|
break;
|
||||||
@@ -92,31 +127,77 @@ public class RDimBusGlobalDServiceImpl extends ServiceImpl<RDimBusGlobalDMapper,
|
|||||||
|
|
||||||
//不为空还要判断完整性是否大于95%
|
//不为空还要判断完整性是否大于95%
|
||||||
integrityDList = integrityDList.stream()
|
integrityDList = integrityDList.stream()
|
||||||
.filter(it -> it.getRealTime() / it.getDueTime() > 0.95f)
|
.filter(it -> it.getRealTime() / it.getDueTime() >= 0.95f)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if(CollectionUtil.isEmpty(integrityDList)){
|
if (CollectionUtil.isEmpty(integrityDList)) {
|
||||||
|
rDimBusGlobalD.setMonitorRate(0f);
|
||||||
rDimBusGlobalD.setLimitRate(3.14159f);
|
rDimBusGlobalD.setLimitRate(3.14159f);
|
||||||
rDimBusGlobalD.setMonitorRate(3.14159f);
|
|
||||||
rDimBusGlobalD.setLimitAvgRate(3.14159f);
|
rDimBusGlobalD.setLimitAvgRate(3.14159f);
|
||||||
poList.add(rDimBusGlobalD);
|
poList.add(rDimBusGlobalD);
|
||||||
break;
|
break;
|
||||||
}else {
|
} else {
|
||||||
|
//有效接入监测点(分母)
|
||||||
List<String> goodMonitorIds = integrityDList.stream().map(RStatIntegrityD::getLineIndex).distinct().collect(Collectors.toList());
|
List<String> goodMonitorIds = integrityDList.stream().map(RStatIntegrityD::getLineIndex).distinct().collect(Collectors.toList());
|
||||||
LambdaQueryWrapper<Monitor> monitorLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Monitor> monitorLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
monitorLambdaQueryWrapper.select(Monitor::getId,Monitor::getLineId).in(Monitor::getId,goodMonitorIds).eq(Monitor::getStatus,DataStateEnum.ENABLE.getCode());
|
monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getLineId,Monitor::getPowerrId).in(Monitor::getId, goodMonitorIds).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode());
|
||||||
List<Monitor> monitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper);
|
List<Monitor> monitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper);
|
||||||
List<String> busBarIds = monitorList.stream().map(Monitor::getLineId).collect(Collectors.toList());
|
List<String> goodLineIds = monitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<String> goodStationIds = monitorList.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
rDimBusGlobalD.setMonitorRate((float) goodLineIds.size() / busBarNum * 100);
|
||||||
|
rDimBusGlobalD.setStationLimitRate((float) goodStationIds.size() / stationNum * 100);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<RStatLimitTargetDPO> limitWrapper = new LambdaQueryWrapper<>();
|
||||||
|
limitWrapper.in(RStatLimitTargetDPO::getLineId, goodMonitorIds).eq(RStatLimitTargetDPO::getTime, date);
|
||||||
|
List<RStatLimitTargetDPO> rStatLimitRateDPOList = rStatLimitTargetDMapper.selectList(limitWrapper);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<RMpEventDetailDPO> eventLambda = new LambdaQueryWrapper<>();
|
||||||
|
eventLambda.select(RMpEventDetailDPO::getMeasurementPointId).in(RMpEventDetailDPO::getMeasurementPointId, goodMonitorIds)
|
||||||
|
.eq(RMpEventDetailDPO::getDataDate, date);
|
||||||
|
|
||||||
|
List<RMpEventDetailDPO> eventList = rMpEventDetailDMapper.selectList(eventLambda);
|
||||||
|
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(rStatLimitRateDPOList) && CollectionUtil.isEmpty(eventList)) {
|
||||||
|
rDimBusGlobalD.setMonitorRate(3.14159f);
|
||||||
|
rDimBusGlobalD.setLimitAvgRate(3.14159f);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
rStatLimitRateDPOList = rStatLimitRateDPOList.stream().filter(item -> item.getAllTime() == 1).collect(Collectors.toList());
|
||||||
|
List<String> dianOneIds = rStatLimitRateDPOList.stream().map(RStatLimitTargetDPO::getLineId).collect(Collectors.toList());
|
||||||
|
eventList = eventList.stream().filter(it -> it.getSagTimes() > 0 || it.getInterruptTimes() > 0 || it.getSwellTimes() > 0).collect(Collectors.toList());
|
||||||
|
List<String> dianTwoIds = eventList.stream().map(RMpEventDetailDPO::getMeasurementPointId).collect(Collectors.toList());
|
||||||
|
|
||||||
}
|
Collection<String> union = CollectionUtils.union(dianOneIds, dianTwoIds);
|
||||||
|
List<String> collect = union.stream().distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (CollectionUtil.isEmpty(collect)) {
|
||||||
|
rDimBusGlobalD.setLimitRate(0f);
|
||||||
|
rDimBusGlobalD.setLimitAvgRate(0f);
|
||||||
|
} else {
|
||||||
|
//反推到母线
|
||||||
|
monitorLambdaQueryWrapper.clear();
|
||||||
|
monitorLambdaQueryWrapper.select(Monitor::getId, Monitor::getLineId,Monitor::getPowerrId).in(Monitor::getId, collect).eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode());
|
||||||
|
List<Monitor> temMonitorList = pmsMonitorPOMapper.selectList(monitorLambdaQueryWrapper);
|
||||||
|
List<String> targetLineIds = temMonitorList.stream().map(Monitor::getLineId).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
float re = (float) targetLineIds.size() / goodLineIds.size();
|
||||||
|
rDimBusGlobalD.setLimitRate(re);
|
||||||
|
rDimBusGlobalD.setLimitAvgRate(re);
|
||||||
|
|
||||||
|
//反推电站
|
||||||
|
List<String> targetSubIds = temMonitorList.stream().map(Monitor::getPowerrId).distinct().collect(Collectors.toList());
|
||||||
|
float reStation = (float) targetSubIds.size() / goodStationIds.size();
|
||||||
|
rDimBusGlobalD.setStationLimitRate(reStation);
|
||||||
|
rDimBusGlobalD.setStationLimitAvgRate(reStation);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
poList.add(rDimBusGlobalD);
|
||||||
|
}
|
||||||
|
this.saveOrUpdateBatchByMultiId(poList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user