1.算法提交
2.用户模块代码调整
This commit is contained in:
@@ -284,7 +284,7 @@ public class ExecutionCenter extends BaseController {
|
||||
public void generaTrixExecutor(@RequestBody BaseParam baseParam) {
|
||||
String methodDescribe = getMethodDescribe("generaTrixExecutor");
|
||||
//手动判断参数是否合法,
|
||||
CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
|
||||
CalculatedParam<DeptGetBusBarDTO> calculatedParam = judgeExecuteParam(baseParam);
|
||||
//母线索引
|
||||
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||
Dept dept = deptFeignClient.getRootDept().getData();
|
||||
@@ -292,10 +292,7 @@ public class ExecutionCenter extends BaseController {
|
||||
deptGetLineParam.setDeptId(dept.getId());
|
||||
deptGetLineParam.setSystemType(0);
|
||||
List<DeptGetBusBarDTO> busBarList = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData();
|
||||
DeptGetBusBarDTO dto = busBarList.stream().filter(u -> Objects.equals(u.getUnitId(),dept.getCode())).findAny().orElse(null);
|
||||
if (Objects.nonNull(dto)){
|
||||
calculatedParam.setIdList(dto.getBusBarIds());
|
||||
}
|
||||
calculatedParam.setIdList(busBarList);
|
||||
}
|
||||
LiteflowResponse liteflowResponse;
|
||||
if (baseParam.isRepair()) {
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.njcn.prepare.executor;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRBusbarVoltageDService;
|
||||
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.IRDimVoltageYService;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
@@ -10,17 +13,17 @@ import com.yomahub.liteflow.enums.NodeTypeEnum;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* 类的介绍:
|
||||
* pqs
|
||||
*
|
||||
* @author xuyang
|
||||
* @version 1.0.0
|
||||
* @createTime 2023/11/27 10:28
|
||||
* @date 2023/11/27
|
||||
*/
|
||||
@LiteflowComponent
|
||||
@RequiredArgsConstructor
|
||||
public class GeneraTrixExecutor extends BaseExecutor{
|
||||
|
||||
private final IRBusbarVoltageDService irBusbarVoltageDService;
|
||||
public class BusBarExecutor extends BaseExecutor{
|
||||
private final IRDimVoltageDService irDimVoltageDService;
|
||||
private final IRDimVoltageMService irDimVoltageMService;
|
||||
private final IRDimVoltageYService irDimVoltageYService;
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean rBusbarVoltageAccess(NodeComponent bindCmp) {
|
||||
@@ -29,24 +32,23 @@ public class GeneraTrixExecutor extends BaseExecutor{
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rBusbarVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public void rBusbarVoltageProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam calculatedParam = bindCmp.getRequestData();
|
||||
CalculatedParam<DeptGetBusBarDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_busbar_voltage_d")) {
|
||||
//日表
|
||||
irBusbarVoltageDService.busbarVoltageD(calculatedParam);
|
||||
irDimVoltageDService.busbarVoltageD(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_busbar_voltage_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
|
||||
irDimVoltageMService.busbarVoltageM(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_busbar_voltage_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
|
||||
irDimVoltageYService.busbarVoltageY(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 母线不同电压等级指标数据-日表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-27
|
||||
*/
|
||||
public interface RBusbarVoltageDMapper extends MppBaseMapper<RBusbarVoltageD> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
|
||||
import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 母线不同电压等级指标数据-日表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-27
|
||||
*/
|
||||
public interface RDimVoltageDMapper extends MppBaseMapper<RDimVoltageD> {
|
||||
|
||||
List<LineDataDto> getLineData(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("collection") Set<String> list);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-月表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
public interface RDimVoltageMMapper extends MppBaseMapper<RDimVoltageM> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-年表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
public interface RDimVoltageYMapper extends MppBaseMapper<RDimVoltageY> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
<?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.RDimVoltageDMapper">
|
||||
|
||||
<select id="getLineData" resultType="com.njcn.prepare.harmonic.pojo.dto.LineDataDto">
|
||||
select
|
||||
A.`time`,
|
||||
A.line_id lineId,
|
||||
A.rms,
|
||||
C.vUnbalance,
|
||||
D.pst,
|
||||
B.vThd,
|
||||
B.v1,B.v2,B.v3,B.v4,B.v5,
|
||||
B.v6,B.v7,B.v8,B.v9,B.v10,
|
||||
B.v11,B.v12,B.v13,B.v14,B.v15,
|
||||
B.v16,B.v17,B.v18,B.v19,B.v20,
|
||||
B.v21,B.v22,B.v23,B.v24,B.v25,
|
||||
B.v26,B.v27,B.v28,B.v29,B.v30,
|
||||
B.v31,B.v32,B.v33,B.v34,B.v35,
|
||||
B.v36,B.v37,B.v38,B.v39,B.v40,
|
||||
B.v41,B.v42,B.v43,B.v44,B.v45,
|
||||
B.v46,B.v47,B.v48,B.v49,B.v50
|
||||
from
|
||||
(
|
||||
select
|
||||
`time`,
|
||||
line_id,
|
||||
max(rms) rms
|
||||
from
|
||||
r_stat_data_v_d
|
||||
where
|
||||
`time` between #{startTime} and #{endTime}
|
||||
and phasic_type in ('A', 'B', 'C')
|
||||
and value_type in ('AVG')
|
||||
<if test="collection != null and collection.size() > 0">
|
||||
and line_id in
|
||||
<foreach collection="collection" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
group by `time`, line_id
|
||||
) A
|
||||
inner join
|
||||
(
|
||||
select
|
||||
`time`,
|
||||
line_id,
|
||||
max(v_thd) vThd,
|
||||
max(v_1) v1,max(v_2) v2,
|
||||
max(v_3) v3,max(v_4) v4,
|
||||
max(v_5) v5,max(v_6) v6,
|
||||
max(v_7) v7,max(v_8) v8,
|
||||
max(v_9) v9,max(v_10) v10,
|
||||
max(v_11) v11,max(v_12) v12,
|
||||
max(v_13) v13,max(v_14) v14,
|
||||
max(v_15) v15,max(v_16) v16,
|
||||
max(v_17) v17,max(v_18) v18,
|
||||
max(v_19) v19,max(v_20) v20,
|
||||
max(v_21) v21,max(v_22) v22,
|
||||
max(v_23) v23,max(v_24) v24,
|
||||
max(v_25) v25,max(v_26) v26,
|
||||
max(v_27) v27,max(v_28) v28,
|
||||
max(v_29) v29,max(v_30) v30,
|
||||
max(v_31) v31,max(v_32) v32,
|
||||
max(v_33) v33,max(v_34) v34,
|
||||
max(v_35) v35,max(v_36) v36,
|
||||
max(v_37) v37,max(v_38) v38,
|
||||
max(v_39) v39,max(v_40) v40,
|
||||
max(v_41) v41,max(v_42) v42,
|
||||
max(v_43) v43,max(v_44) v44,
|
||||
max(v_45) v45,max(v_46) v46,
|
||||
max(v_47) v47,max(v_48) v48,
|
||||
max(v_49) v49,max(v_50) v50
|
||||
from
|
||||
r_stat_data_v_d
|
||||
where
|
||||
`time` between #{startTime} and #{endTime}
|
||||
and phasic_type in ('A', 'B', 'C')
|
||||
and value_type in ('CP95')
|
||||
<if test="collection != null and collection.size() > 0">
|
||||
and line_id in
|
||||
<foreach collection="collection" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
group by `time`,line_id
|
||||
) B
|
||||
on A.`time` = B.`time` and A.line_id = B.line_id
|
||||
inner join
|
||||
(
|
||||
select
|
||||
`time`,
|
||||
line_id,
|
||||
max(v_unbalance) vUnbalance
|
||||
from
|
||||
r_stat_data_v_d
|
||||
where
|
||||
`time` between #{startTime} and #{endTime}
|
||||
and phasic_type = 'T'
|
||||
and value_type in ('CP95')
|
||||
<if test="collection != null and collection.size() > 0">
|
||||
and line_id in
|
||||
<foreach collection="collection" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
group by `time`,line_id
|
||||
) C
|
||||
on A.`time` = C.`time` and A.line_id = C.line_id
|
||||
inner join
|
||||
(
|
||||
select
|
||||
`time`,
|
||||
line_id,
|
||||
max(pst) pst
|
||||
from
|
||||
r_stat_data_flicker_d
|
||||
where
|
||||
`time` between #{startTime} and #{endTime}
|
||||
and phasic_type in ('A', 'B', 'C')
|
||||
and value_type in ('MAX')
|
||||
<if test="collection != null and collection.size() > 0">
|
||||
and line_id in
|
||||
<foreach collection="collection" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
group by `time`,line_id
|
||||
) D
|
||||
on A.`time` = D.`time` and A.line_id = D.line_id
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
@@ -12,11 +13,11 @@ import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
* @author xuyang
|
||||
* @since 2023-11-27
|
||||
*/
|
||||
public interface IRBusbarVoltageDService extends IService<RBusbarVoltageD> {
|
||||
public interface IRDimVoltageDService extends IService<RDimVoltageD> {
|
||||
|
||||
/**
|
||||
* 插入母线不同电压等级指标数据-日表
|
||||
*/
|
||||
void busbarVoltageD(CalculatedParam calculatedParam);
|
||||
void busbarVoltageD(CalculatedParam<DeptGetBusBarDTO> calculatedParam);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-月表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
public interface IRDimVoltageMService extends IService<RDimVoltageM> {
|
||||
|
||||
/**
|
||||
* 插入母线不同电压等级指标数据-月表
|
||||
*/
|
||||
void busbarVoltageM(CalculatedParam<DeptGetBusBarDTO> calculatedParam);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-年表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
public interface IRDimVoltageYService extends IService<RDimVoltageY> {
|
||||
|
||||
/**
|
||||
* 插入母线不同电压等级指标数据-年表
|
||||
*/
|
||||
void busbarVoltageY(CalculatedParam<DeptGetBusBarDTO> calculatedParam);
|
||||
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.harmonic.pojo.po.dim.RBusbarVoltageD;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RBusbarVoltageDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRBusbarVoltageDService;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 母线不同电压等级指标数据-日表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-27
|
||||
*/
|
||||
@Service
|
||||
public class RBusbarVoltageDServiceImpl extends MppServiceImpl<RBusbarVoltageDMapper, RBusbarVoltageD> implements IRBusbarVoltageDService {
|
||||
|
||||
@Override
|
||||
public void busbarVoltageD(CalculatedParam calculatedParam) {
|
||||
List<String> busbarList = calculatedParam.getIdList();
|
||||
System.out.println("母线集合:" + busbarList);
|
||||
System.out.println("个数:" + busbarList.size());
|
||||
//以尺寸1000分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(busbarList,1000);
|
||||
LocalDateTime beginDay = LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDateTime endDay = LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.device.pms.pojo.po.GeneratrixWire;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.PmsMonitorPOMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageDMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageDService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 母线不同电压等级指标数据-日表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-27
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class RDimVoltageDServiceImpl extends MppServiceImpl<RDimVoltageDMapper, RDimVoltageD> implements IRDimVoltageDService {
|
||||
|
||||
private final PmsMonitorPOMapper pmsMonitorPOMapper;
|
||||
|
||||
private final GeneratrixWireMapper generatrixWireMapper;
|
||||
|
||||
@Override
|
||||
public void busbarVoltageD(CalculatedParam<DeptGetBusBarDTO> calculatedParam) {
|
||||
List<RDimVoltageD> result = new ArrayList<>();
|
||||
List<DeptGetBusBarDTO> deptList = calculatedParam.getIdList();
|
||||
String beginDay = LocalDateTimeUtil.format(LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
|
||||
String endDay = LocalDateTimeUtil.format(LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)),DatePattern.NORM_DATETIME_PATTERN);
|
||||
Set<String> lineList = new HashSet<>();
|
||||
Set<String> busBarList = new HashSet<>();
|
||||
//获取监测点集合
|
||||
deptList.forEach(item->{
|
||||
lineList.addAll(item.getBusBarAndMonitorIDs());
|
||||
busBarList.addAll(item.getBusBarIds());
|
||||
});
|
||||
if (CollectionUtil.isNotEmpty(lineList)){
|
||||
//获取监测点信息
|
||||
List<Monitor> list1 = getMonitorInfo(lineList);
|
||||
//获取监测点数据
|
||||
List<LineDataDto> list2 = getLineData(beginDay,endDay,lineList);
|
||||
//获取母线信息
|
||||
List<GeneratrixWire> list3 = getBusBarInfo(busBarList);
|
||||
//循环区域信息,筛选符合条件的数据,做统计
|
||||
deptList.forEach(item->{
|
||||
List<String> list = item.getBusBarIds();
|
||||
if (CollUtil.isNotEmpty(list)) {
|
||||
RDimVoltageD rDimVoltageD = new RDimVoltageD();
|
||||
rDimVoltageD.setOrgId(item.getUnitId());
|
||||
rDimVoltageD.setStatisDate(LocalDate.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_FORMATTER));
|
||||
//取母线并集
|
||||
List<GeneratrixWire> list4 = list3.stream().filter(obj -> list.contains(obj.getId())).collect(Collectors.toList());
|
||||
//根据母线电压等级分组
|
||||
Map<String, List<GeneratrixWire>> map1 = list4.stream().collect(Collectors.groupingBy(GeneratrixWire::getScale));
|
||||
//循环分组数据,获取母线下监测点数据
|
||||
map1.forEach((k, v) -> {
|
||||
rDimVoltageD.setVoltageType(k);
|
||||
//不同电压等级下,母线的id
|
||||
List<String> list5 = v.stream().map(GeneratrixWire::getId).collect(Collectors.toList());
|
||||
//获取这些母线下的监测点
|
||||
List<Monitor> list6 = list1.stream().filter(obj -> list5.contains(obj.getLineId())).collect(Collectors.toList());
|
||||
//获取监测点数据
|
||||
List<LineDataDto> list7 = list2.stream().filter(vo->list6.stream().map(Monitor::getId).collect(Collectors.toList()).contains(vo.getLineId())).collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(list7)){
|
||||
//赋值
|
||||
assignment(list7,rDimVoltageD);
|
||||
}
|
||||
});
|
||||
result.add(rDimVoltageD);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(result)){
|
||||
this.saveOrUpdateBatchByMultiId(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监测点信息
|
||||
* @param lineList 监测点集合
|
||||
* @return 监测点信息
|
||||
*/
|
||||
public List<Monitor> getMonitorInfo(Set<String> lineList) {
|
||||
LambdaQueryWrapper<Monitor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(Monitor::getId,lineList).eq(Monitor::getStatus,1);
|
||||
return pmsMonitorPOMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取母线信息
|
||||
* @param busBarList 监测点集合
|
||||
* @return 母线信息
|
||||
*/
|
||||
public List<GeneratrixWire> getBusBarInfo(Set<String> busBarList){
|
||||
LambdaQueryWrapper<GeneratrixWire> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(GeneratrixWire::getId,busBarList).eq(GeneratrixWire::getStatus, 1);
|
||||
return generatrixWireMapper.selectList(lambdaQueryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取监测点数据
|
||||
* @param startTime 开始时间
|
||||
* @param endTime 结束时间
|
||||
* @param lineList 监测点集合
|
||||
* @return 母线信息
|
||||
*/
|
||||
public List<LineDataDto> getLineData(String startTime, String endTime, Set<String> lineList){
|
||||
return this.baseMapper.getLineData(startTime,endTime,lineList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 给实体赋值
|
||||
* @param list7 数据集合
|
||||
* @param rDimVoltageD 对象
|
||||
*/
|
||||
public void assignment(List<LineDataDto> list7, RDimVoltageD rDimVoltageD) {
|
||||
rDimVoltageD.setV(list7.stream().mapToDouble(LineDataDto::getRms).average().orElse(0d));
|
||||
rDimVoltageD.setVUnbalance(list7.stream().mapToDouble(LineDataDto::getVUnbalance).average().orElse(0d));
|
||||
rDimVoltageD.setPst(list7.stream().mapToDouble(LineDataDto::getPst).average().orElse(0d));
|
||||
rDimVoltageD.setVThd(list7.stream().mapToDouble(LineDataDto::getVThd).average().orElse(0d));
|
||||
rDimVoltageD.setV1(list7.stream().mapToDouble(LineDataDto::getV1).average().orElse(0d));
|
||||
rDimVoltageD.setV2(list7.stream().mapToDouble(LineDataDto::getV2).average().orElse(0d));
|
||||
rDimVoltageD.setV3(list7.stream().mapToDouble(LineDataDto::getV3).average().orElse(0d));
|
||||
rDimVoltageD.setV4(list7.stream().mapToDouble(LineDataDto::getV4).average().orElse(0d));
|
||||
rDimVoltageD.setV5(list7.stream().mapToDouble(LineDataDto::getV5).average().orElse(0d));
|
||||
rDimVoltageD.setV6(list7.stream().mapToDouble(LineDataDto::getV6).average().orElse(0d));
|
||||
rDimVoltageD.setV7(list7.stream().mapToDouble(LineDataDto::getV7).average().orElse(0d));
|
||||
rDimVoltageD.setV8(list7.stream().mapToDouble(LineDataDto::getV8).average().orElse(0d));
|
||||
rDimVoltageD.setV9(list7.stream().mapToDouble(LineDataDto::getV9).average().orElse(0d));
|
||||
rDimVoltageD.setV10(list7.stream().mapToDouble(LineDataDto::getV10).average().orElse(0d));
|
||||
rDimVoltageD.setV11(list7.stream().mapToDouble(LineDataDto::getV11).average().orElse(0d));
|
||||
rDimVoltageD.setV12(list7.stream().mapToDouble(LineDataDto::getV12).average().orElse(0d));
|
||||
rDimVoltageD.setV13(list7.stream().mapToDouble(LineDataDto::getV13).average().orElse(0d));
|
||||
rDimVoltageD.setV14(list7.stream().mapToDouble(LineDataDto::getV14).average().orElse(0d));
|
||||
rDimVoltageD.setV15(list7.stream().mapToDouble(LineDataDto::getV15).average().orElse(0d));
|
||||
rDimVoltageD.setV16(list7.stream().mapToDouble(LineDataDto::getV16).average().orElse(0d));
|
||||
rDimVoltageD.setV17(list7.stream().mapToDouble(LineDataDto::getV17).average().orElse(0d));
|
||||
rDimVoltageD.setV18(list7.stream().mapToDouble(LineDataDto::getV18).average().orElse(0d));
|
||||
rDimVoltageD.setV19(list7.stream().mapToDouble(LineDataDto::getV19).average().orElse(0d));
|
||||
rDimVoltageD.setV20(list7.stream().mapToDouble(LineDataDto::getV20).average().orElse(0d));
|
||||
rDimVoltageD.setV21(list7.stream().mapToDouble(LineDataDto::getV21).average().orElse(0d));
|
||||
rDimVoltageD.setV22(list7.stream().mapToDouble(LineDataDto::getV22).average().orElse(0d));
|
||||
rDimVoltageD.setV23(list7.stream().mapToDouble(LineDataDto::getV23).average().orElse(0d));
|
||||
rDimVoltageD.setV24(list7.stream().mapToDouble(LineDataDto::getV24).average().orElse(0d));
|
||||
rDimVoltageD.setV25(list7.stream().mapToDouble(LineDataDto::getV25).average().orElse(0d));
|
||||
rDimVoltageD.setV26(list7.stream().mapToDouble(LineDataDto::getV26).average().orElse(0d));
|
||||
rDimVoltageD.setV27(list7.stream().mapToDouble(LineDataDto::getV27).average().orElse(0d));
|
||||
rDimVoltageD.setV28(list7.stream().mapToDouble(LineDataDto::getV28).average().orElse(0d));
|
||||
rDimVoltageD.setV29(list7.stream().mapToDouble(LineDataDto::getV29).average().orElse(0d));
|
||||
rDimVoltageD.setV30(list7.stream().mapToDouble(LineDataDto::getV30).average().orElse(0d));
|
||||
rDimVoltageD.setV31(list7.stream().mapToDouble(LineDataDto::getV31).average().orElse(0d));
|
||||
rDimVoltageD.setV32(list7.stream().mapToDouble(LineDataDto::getV32).average().orElse(0d));
|
||||
rDimVoltageD.setV33(list7.stream().mapToDouble(LineDataDto::getV33).average().orElse(0d));
|
||||
rDimVoltageD.setV34(list7.stream().mapToDouble(LineDataDto::getV34).average().orElse(0d));
|
||||
rDimVoltageD.setV35(list7.stream().mapToDouble(LineDataDto::getV35).average().orElse(0d));
|
||||
rDimVoltageD.setV36(list7.stream().mapToDouble(LineDataDto::getV36).average().orElse(0d));
|
||||
rDimVoltageD.setV37(list7.stream().mapToDouble(LineDataDto::getV37).average().orElse(0d));
|
||||
rDimVoltageD.setV38(list7.stream().mapToDouble(LineDataDto::getV38).average().orElse(0d));
|
||||
rDimVoltageD.setV39(list7.stream().mapToDouble(LineDataDto::getV39).average().orElse(0d));
|
||||
rDimVoltageD.setV40(list7.stream().mapToDouble(LineDataDto::getV40).average().orElse(0d));
|
||||
rDimVoltageD.setV41(list7.stream().mapToDouble(LineDataDto::getV41).average().orElse(0d));
|
||||
rDimVoltageD.setV42(list7.stream().mapToDouble(LineDataDto::getV42).average().orElse(0d));
|
||||
rDimVoltageD.setV43(list7.stream().mapToDouble(LineDataDto::getV43).average().orElse(0d));
|
||||
rDimVoltageD.setV44(list7.stream().mapToDouble(LineDataDto::getV44).average().orElse(0d));
|
||||
rDimVoltageD.setV45(list7.stream().mapToDouble(LineDataDto::getV45).average().orElse(0d));
|
||||
rDimVoltageD.setV46(list7.stream().mapToDouble(LineDataDto::getV46).average().orElse(0d));
|
||||
rDimVoltageD.setV47(list7.stream().mapToDouble(LineDataDto::getV47).average().orElse(0d));
|
||||
rDimVoltageD.setV48(list7.stream().mapToDouble(LineDataDto::getV48).average().orElse(0d));
|
||||
rDimVoltageD.setV49(list7.stream().mapToDouble(LineDataDto::getV49).average().orElse(0d));
|
||||
rDimVoltageD.setV50(list7.stream().mapToDouble(LineDataDto::getV50).average().orElse(0d));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,158 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim.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.toolkit.CollectionUtils;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageD;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageMMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.dto.LineDataDto;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageMService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.ehcache.core.util.CollectionUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-月表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class RDimVoltageMServiceImpl extends MppServiceImpl<RDimVoltageMMapper, RDimVoltageM> implements IRDimVoltageMService {
|
||||
|
||||
private final RDimVoltageDMapper rDimVoltageDMapper;
|
||||
|
||||
@Override
|
||||
public void busbarVoltageM(CalculatedParam<DeptGetBusBarDTO> calculatedParam) {
|
||||
List<RDimVoltageM> result = new ArrayList<>();
|
||||
List<DeptGetBusBarDTO> list = calculatedParam.getIdList();
|
||||
DateTime startTime = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
|
||||
DateTime endTime = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate()));
|
||||
List<String> deptList = list.stream().map(DeptGetBusBarDTO::getUnitId).collect(Collectors.toList());
|
||||
//获取日表数据
|
||||
Map<String, List<RDimVoltageD>> map = getDayData(startTime,endTime,deptList);
|
||||
map.forEach((k,v)->{
|
||||
RDimVoltageM rDimVoltageM = new RDimVoltageM();
|
||||
rDimVoltageM.setOrgId(k);
|
||||
rDimVoltageM.setStatisDate(LocalDateTimeUtil.parseDate(startTime.toString(DatePattern.NORM_DATE_PATTERN),DatePattern.NORM_DATE_FORMATTER));
|
||||
Map<String, List<RDimVoltageD>> map1 = v.stream().collect(Collectors.groupingBy(RDimVoltageD::getVoltageType));
|
||||
map1.forEach((k1,v1)->{
|
||||
rDimVoltageM.setVoltageType(k1);
|
||||
//获取平均值
|
||||
getAvg(v1,rDimVoltageM);
|
||||
result.add(rDimVoltageM);
|
||||
//获取标准差
|
||||
getSd(v1,rDimVoltageM);
|
||||
result.add(rDimVoltageM);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取日表数据,按照单位分组
|
||||
* @param startTime 起始时间
|
||||
* @param endTime 结束时间
|
||||
* @param deptList 单位集合
|
||||
* @return
|
||||
*/
|
||||
public Map<String, List<RDimVoltageD>> getDayData(DateTime startTime, DateTime endTime, List<String> deptList) {
|
||||
LambdaQueryWrapper<RDimVoltageD> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(RDimVoltageD::getOrgId,deptList).between(RDimVoltageD::getStatisDate,startTime,endTime);
|
||||
List<RDimVoltageD> list = rDimVoltageDMapper.selectList(lambdaQueryWrapper);
|
||||
return list.stream().collect(Collectors.groupingBy(RDimVoltageD::getOrgId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取平均值
|
||||
* @param list 数据集合
|
||||
* @param rDimVoltageM 实体
|
||||
*/
|
||||
public void getAvg(List<RDimVoltageD> list, RDimVoltageM rDimVoltageM) {
|
||||
rDimVoltageM.setDataType("avg");
|
||||
rDimVoltageM.setV(list.stream().mapToDouble(RDimVoltageD::getV).average().orElse(0d));
|
||||
rDimVoltageM.setVUnbalance(list.stream().mapToDouble(RDimVoltageD::getVUnbalance).average().orElse(0d));
|
||||
rDimVoltageM.setPst(list.stream().mapToDouble(RDimVoltageD::getPst).average().orElse(0d));
|
||||
rDimVoltageM.setVThd(list.stream().mapToDouble(RDimVoltageD::getVThd).average().orElse(0d));
|
||||
rDimVoltageM.setV1(list.stream().mapToDouble(RDimVoltageD::getV1).average().orElse(0d));
|
||||
rDimVoltageM.setV2(list.stream().mapToDouble(RDimVoltageD::getV2).average().orElse(0d));
|
||||
rDimVoltageM.setV3(list.stream().mapToDouble(RDimVoltageD::getV3).average().orElse(0d));
|
||||
rDimVoltageM.setV4(list.stream().mapToDouble(RDimVoltageD::getV4).average().orElse(0d));
|
||||
rDimVoltageM.setV5(list.stream().mapToDouble(RDimVoltageD::getV5).average().orElse(0d));
|
||||
rDimVoltageM.setV6(list.stream().mapToDouble(RDimVoltageD::getV6).average().orElse(0d));
|
||||
rDimVoltageM.setV7(list.stream().mapToDouble(RDimVoltageD::getV7).average().orElse(0d));
|
||||
rDimVoltageM.setV8(list.stream().mapToDouble(RDimVoltageD::getV8).average().orElse(0d));
|
||||
rDimVoltageM.setV9(list.stream().mapToDouble(RDimVoltageD::getV9).average().orElse(0d));
|
||||
rDimVoltageM.setV10(list.stream().mapToDouble(RDimVoltageD::getV10).average().orElse(0d));
|
||||
rDimVoltageM.setV11(list.stream().mapToDouble(RDimVoltageD::getV11).average().orElse(0d));
|
||||
rDimVoltageM.setV12(list.stream().mapToDouble(RDimVoltageD::getV12).average().orElse(0d));
|
||||
rDimVoltageM.setV13(list.stream().mapToDouble(RDimVoltageD::getV13).average().orElse(0d));
|
||||
rDimVoltageM.setV14(list.stream().mapToDouble(RDimVoltageD::getV14).average().orElse(0d));
|
||||
rDimVoltageM.setV15(list.stream().mapToDouble(RDimVoltageD::getV15).average().orElse(0d));
|
||||
rDimVoltageM.setV16(list.stream().mapToDouble(RDimVoltageD::getV16).average().orElse(0d));
|
||||
rDimVoltageM.setV17(list.stream().mapToDouble(RDimVoltageD::getV17).average().orElse(0d));
|
||||
rDimVoltageM.setV18(list.stream().mapToDouble(RDimVoltageD::getV18).average().orElse(0d));
|
||||
rDimVoltageM.setV19(list.stream().mapToDouble(RDimVoltageD::getV19).average().orElse(0d));
|
||||
rDimVoltageM.setV20(list.stream().mapToDouble(RDimVoltageD::getV20).average().orElse(0d));
|
||||
rDimVoltageM.setV21(list.stream().mapToDouble(RDimVoltageD::getV21).average().orElse(0d));
|
||||
rDimVoltageM.setV22(list.stream().mapToDouble(RDimVoltageD::getV22).average().orElse(0d));
|
||||
rDimVoltageM.setV23(list.stream().mapToDouble(RDimVoltageD::getV23).average().orElse(0d));
|
||||
rDimVoltageM.setV24(list.stream().mapToDouble(RDimVoltageD::getV24).average().orElse(0d));
|
||||
rDimVoltageM.setV25(list.stream().mapToDouble(RDimVoltageD::getV25).average().orElse(0d));
|
||||
rDimVoltageM.setV26(list.stream().mapToDouble(RDimVoltageD::getV26).average().orElse(0d));
|
||||
rDimVoltageM.setV27(list.stream().mapToDouble(RDimVoltageD::getV27).average().orElse(0d));
|
||||
rDimVoltageM.setV28(list.stream().mapToDouble(RDimVoltageD::getV28).average().orElse(0d));
|
||||
rDimVoltageM.setV29(list.stream().mapToDouble(RDimVoltageD::getV29).average().orElse(0d));
|
||||
rDimVoltageM.setV30(list.stream().mapToDouble(RDimVoltageD::getV30).average().orElse(0d));
|
||||
rDimVoltageM.setV31(list.stream().mapToDouble(RDimVoltageD::getV31).average().orElse(0d));
|
||||
rDimVoltageM.setV32(list.stream().mapToDouble(RDimVoltageD::getV32).average().orElse(0d));
|
||||
rDimVoltageM.setV33(list.stream().mapToDouble(RDimVoltageD::getV33).average().orElse(0d));
|
||||
rDimVoltageM.setV34(list.stream().mapToDouble(RDimVoltageD::getV34).average().orElse(0d));
|
||||
rDimVoltageM.setV35(list.stream().mapToDouble(RDimVoltageD::getV35).average().orElse(0d));
|
||||
rDimVoltageM.setV36(list.stream().mapToDouble(RDimVoltageD::getV36).average().orElse(0d));
|
||||
rDimVoltageM.setV37(list.stream().mapToDouble(RDimVoltageD::getV37).average().orElse(0d));
|
||||
rDimVoltageM.setV38(list.stream().mapToDouble(RDimVoltageD::getV38).average().orElse(0d));
|
||||
rDimVoltageM.setV39(list.stream().mapToDouble(RDimVoltageD::getV39).average().orElse(0d));
|
||||
rDimVoltageM.setV40(list.stream().mapToDouble(RDimVoltageD::getV40).average().orElse(0d));
|
||||
rDimVoltageM.setV41(list.stream().mapToDouble(RDimVoltageD::getV41).average().orElse(0d));
|
||||
rDimVoltageM.setV42(list.stream().mapToDouble(RDimVoltageD::getV42).average().orElse(0d));
|
||||
rDimVoltageM.setV43(list.stream().mapToDouble(RDimVoltageD::getV43).average().orElse(0d));
|
||||
rDimVoltageM.setV44(list.stream().mapToDouble(RDimVoltageD::getV44).average().orElse(0d));
|
||||
rDimVoltageM.setV45(list.stream().mapToDouble(RDimVoltageD::getV45).average().orElse(0d));
|
||||
rDimVoltageM.setV46(list.stream().mapToDouble(RDimVoltageD::getV46).average().orElse(0d));
|
||||
rDimVoltageM.setV47(list.stream().mapToDouble(RDimVoltageD::getV47).average().orElse(0d));
|
||||
rDimVoltageM.setV48(list.stream().mapToDouble(RDimVoltageD::getV48).average().orElse(0d));
|
||||
rDimVoltageM.setV49(list.stream().mapToDouble(RDimVoltageD::getV49).average().orElse(0d));
|
||||
rDimVoltageM.setV50(list.stream().mapToDouble(RDimVoltageD::getV50).average().orElse(0d));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取标准差
|
||||
* @param list 数据集合
|
||||
* @param rDimVoltageM 实体
|
||||
*/
|
||||
public void getSd(List<RDimVoltageD> list, RDimVoltageM rDimVoltageM) {
|
||||
rDimVoltageM.setDataType("sd");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO;
|
||||
import com.njcn.harmonic.pojo.po.dim.RDimVoltageY;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageYMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.dim.IRDimVoltageYService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 区域母线**电压等级**指标标准差、平均值-年表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author xuyang
|
||||
* @since 2023-11-29
|
||||
*/
|
||||
@Service
|
||||
public class RDimVoltageYServiceImpl extends ServiceImpl<RDimVoltageYMapper, RDimVoltageY> implements IRDimVoltageYService {
|
||||
|
||||
@Override
|
||||
public void busbarVoltageY(CalculatedParam<DeptGetBusBarDTO> calculatedParam) {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user