1.算法提交

2.用户模块代码调整
This commit is contained in:
2023-11-29 16:21:18 +08:00
parent f46749afb9
commit bae007f471
20 changed files with 1362 additions and 82 deletions

View File

@@ -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()) {

View File

@@ -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);
}
}
}
}

View File

@@ -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> {
}

View File

@@ -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);
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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>

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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");
}
}

View File

@@ -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) {
}
}