算法模块删除不必要的代码,有备份,如果存疑就联系我
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
package com.njcn.algorithm;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/4 14:05
|
||||
*/
|
||||
@Slf4j
|
||||
@EnableFeignClients(basePackages = "com.njcn")
|
||||
@SpringBootApplication(scanBasePackages = "com.njcn")
|
||||
public class AlgorithmApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(AlgorithmApplication.class,args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.njcn.algorithm.event.mapper;
|
||||
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailD;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailM;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 15:55
|
||||
*/
|
||||
public interface RMpEventDetailDMapper extends MppBaseMapper<RMpEventDetailD> {
|
||||
|
||||
/***
|
||||
* 处理在暂态指标明细——月报表数据获取
|
||||
* @author hongawen
|
||||
* @date 2023/11/2 10:54
|
||||
* @param lineIds 监测点集合
|
||||
* @param dataDate 统计日期
|
||||
* @param beginMonth 起始时间
|
||||
* @param endMonth 截止时间
|
||||
* @return List<RMpEventDetailDPO>
|
||||
*/
|
||||
List<RMpEventDetailM> handleMonth(@Param("lineIds") List<String> lineIds, @Param("dataDate") String dataDate, @Param("beginMonth") DateTime beginMonth, @Param("endMonth") DateTime endMonth);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.algorithm.event.mapper;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailM;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/12/28 14:58【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface RMpEventDetailMMapper extends MppBaseMapper<RMpEventDetailM> {
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.njcn.algorithm.event.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailD;
|
||||
import com.njcn.event.pojo.po.RmpEventDetailPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 15:43
|
||||
*/
|
||||
public interface RMpEventDetailMapper extends BaseMapper<RmpEventDetailPO> {
|
||||
|
||||
/***
|
||||
* 处理在暂态指标明细——日报表数据获取
|
||||
* @author hongawen
|
||||
* @date 2023/11/2 10:54
|
||||
* @param lineIds 监测点集合
|
||||
* @param dataDate 统计日期
|
||||
* @param beginDay 起始时间
|
||||
* @param endDay 截止时间
|
||||
* @param voltageDip 电压暂降
|
||||
* @param voltageRise 电压暂升
|
||||
* @param shortInterruptions 短时中断
|
||||
* @return List<RMpEventDetailDPO>
|
||||
*/
|
||||
List<RMpEventDetailD> handleDay(@Param("lineIds") List<String> lineIds, @Param("dataDate") String dataDate, @Param("beginDay") LocalDateTime beginDay, @Param("endDay") LocalDateTime endDay, @Param("voltageDip") String voltageDip, @Param("voltageRise") String voltageRise, @Param("shortInterruptions") String shortInterruptions);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?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.algorithm.event.mapper.RMpEventDetailDMapper">
|
||||
|
||||
<select id="handleMonth" resultType="com.njcn.event.pojo.po.RMpEventDetailM">
|
||||
SELECT
|
||||
#{dataDate} dataDate,
|
||||
measurement_point_id measurement_point_id,
|
||||
sum(sag_times) AS sagTimes,
|
||||
sum(swell_times) AS swellTimes,
|
||||
sum(interrupt_times) AS interruptTimes
|
||||
FROM
|
||||
r_mp_event_detail_d r_mp_event_detail_d
|
||||
where
|
||||
r_mp_event_detail_d.data_date between #{beginMonth} and #{endMonth}
|
||||
AND
|
||||
r_mp_event_detail_d.measurement_point_id IN
|
||||
<foreach collection="lineIds" item="lineId" separator="," open="(" close=")">
|
||||
#{lineId}
|
||||
</foreach>
|
||||
GROUP BY
|
||||
measurement_point_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.algorithm.event.mapper.RMpEventDetailMMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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.algorithm.event.mapper.RMpEventDetailMapper">
|
||||
|
||||
<select id="handleDay" resultType="com.njcn.event.pojo.po.RMpEventDetailD">
|
||||
SELECT
|
||||
#{dataDate} dataDate,
|
||||
measurement_point_id measurement_point_id,
|
||||
sum( event_type = #{voltageDip} ) AS sagTimes,
|
||||
sum( event_type = #{voltageRise} ) AS swellTimes,
|
||||
sum( event_type = #{shortInterruptions} ) AS interruptTimes
|
||||
FROM
|
||||
r_mp_event_detail r_mp_event_detail
|
||||
where r_mp_event_detail.start_time between #{beginDay} and #{endDay}
|
||||
AND r_mp_event_detail.measurement_point_id
|
||||
IN
|
||||
<foreach collection="lineIds" item="lineId" separator="," open="(" close=")">
|
||||
#{lineId}
|
||||
</foreach>
|
||||
GROUP BY
|
||||
measurement_point_id
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.algorithm.event.service;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailD;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 15:48
|
||||
*/
|
||||
public interface IRMpEventDetailDService extends IMppService<RMpEventDetailD> {
|
||||
|
||||
/***
|
||||
* 监测点暂态指标明细--月表算法
|
||||
* @author hongawen
|
||||
* @date 2023/11/2 11:19
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void handleMonth(CalculatedParam calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.njcn.algorithm.event.service;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailM;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 16:03
|
||||
*/
|
||||
public interface IRMpEventDetailMService extends IMppService<RMpEventDetailM> {
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.njcn.algorithm.event.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.event.pojo.po.RmpEventDetailPO;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 15:31
|
||||
*/
|
||||
public interface IRMpEventDetailService extends IService<RmpEventDetailPO> {
|
||||
|
||||
|
||||
/***
|
||||
* 监测点暂态指标明细--日表算法
|
||||
* @author hongawen
|
||||
* @date 2023/11/2 11:19
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void handleDay(CalculatedParam calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.njcn.algorithm.event.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.algorithm.event.mapper.RMpEventDetailDMapper;
|
||||
import com.njcn.algorithm.event.service.IRMpEventDetailDService;
|
||||
import com.njcn.algorithm.event.service.IRMpEventDetailMService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailD;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailM;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author hongawen
|
||||
* @version 1.0
|
||||
* @data 2024/11/6 15:49
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class RMpEventDetailDServiceImpl extends MppServiceImpl<RMpEventDetailDMapper, RMpEventDetailD> implements IRMpEventDetailDService {
|
||||
|
||||
|
||||
private final IRMpEventDetailMService rMpEventDetailMService;
|
||||
|
||||
|
||||
|
||||
/***
|
||||
*监测点暂态指标明细--月表算法
|
||||
*/
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam calculatedParam) {
|
||||
List<String> lineIds = calculatedParam.getIdList();
|
||||
//以尺寸1000分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIds, 1000);
|
||||
DateTime beginMonth = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime endMonth = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
List<RMpEventDetailM> rMpEventDetailMPOList = this.baseMapper.handleMonth(pendingId, DateUtil.format(beginMonth, DatePattern.NORM_DATE_PATTERN), beginMonth, endMonth);
|
||||
rMpEventDetailMService.saveOrUpdateBatchByMultiId(rMpEventDetailMPOList);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.algorithm.event.service.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.algorithm.event.mapper.RMpEventDetailMMapper;
|
||||
import com.njcn.algorithm.event.service.IRMpEventDetailMService;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailM;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Description:
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/12/28 14:58【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class RMpEventDetailMServiceImpl extends MppServiceImpl<RMpEventDetailMMapper, RMpEventDetailM> implements IRMpEventDetailMService {
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.njcn.algorithm.event.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.algorithm.event.mapper.RMpEventDetailMapper;
|
||||
import com.njcn.algorithm.event.service.IRMpEventDetailDService;
|
||||
import com.njcn.algorithm.event.service.IRMpEventDetailService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.event.pojo.po.RMpEventDetailD;
|
||||
import com.njcn.event.pojo.po.RmpEventDetailPO;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/4/23 13:50【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RMpEventDetailServiceImpl extends ServiceImpl<RMpEventDetailMapper, RmpEventDetailPO> implements IRMpEventDetailService {
|
||||
|
||||
private final IRMpEventDetailDService rMpEventDetailDService;
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final RedisUtil redisUtil;
|
||||
|
||||
|
||||
/***
|
||||
* 监测点暂态指标明细--日表算法
|
||||
*/
|
||||
@Override
|
||||
public void handleDay(CalculatedParam calculatedParam) {
|
||||
List<String> lineIds = calculatedParam.getIdList();
|
||||
//以尺寸1000分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(lineIds,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));
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
//查询
|
||||
List<RMpEventDetailD> rMpEventDetailDList = this.baseMapper.handleDay(
|
||||
pendingId
|
||||
,LocalDateTimeUtil.format(beginDay,DatePattern.NORM_DATE_PATTERN)
|
||||
,beginDay
|
||||
,endDay
|
||||
,getEventTypeId(DicDataEnum.VOLTAGE_DIP.getCode())
|
||||
,getEventTypeId(DicDataEnum.VOLTAGE_RISE.getCode())
|
||||
,getEventTypeId(DicDataEnum.SHORT_INTERRUPTIONS.getCode()));
|
||||
//入库
|
||||
rMpEventDetailDService.saveOrUpdateBatchByMultiId(rMpEventDetailDList);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getEventTypeId(String code) {
|
||||
String eventType = redisUtil.getStringByKey(code);
|
||||
eventType = Optional.ofNullable(eventType).orElseGet(() -> {
|
||||
DictData data = dicDataFeignClient.getDicDataByCode(code).getData();
|
||||
redisUtil.saveByKey(data.getCode(), data.getId());
|
||||
return data.getId();
|
||||
});
|
||||
|
||||
return eventType;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.njcn.algorithm.harmonic.line.mapper;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.harmonic.pojo.po.algorithm.line.RMpMonitorEvaluateD;
|
||||
|
||||
/**
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface RMpMonitorEvaluateDMapper extends MppBaseMapper<RMpMonitorEvaluateD> {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.algorithm.harmonic.line.mapper.RMpMonitorEvaluateDMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.njcn.algorithm.harmonic.line.service;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.harmonic.pojo.po.algorithm.line.RMpMonitorEvaluateD;
|
||||
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* Date: 2023/4/19 15:42【需求编号】
|
||||
*
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface IRMpMonitorEvaluateDService extends IMppService<RMpMonitorEvaluateD> {
|
||||
|
||||
|
||||
/***
|
||||
* 监测点报表--日统计
|
||||
* @author hongawen
|
||||
* @date 2023/11/3 14:48
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
void handleDay(CalculatedParam calculatedParam);
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
package com.njcn.algorithm.harmonic.line.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.algorithm.harmonic.line.mapper.RMpMonitorEvaluateDMapper;
|
||||
import com.njcn.algorithm.harmonic.line.service.IRMpMonitorEvaluateDService;
|
||||
import com.njcn.algorithm.pojo.param.CalculatedParam;
|
||||
import com.njcn.algorithm.support.mapper.PmsAbnormalRulesMapper;
|
||||
import com.njcn.device.biz.commApi.CommLineClient;
|
||||
import com.njcn.device.biz.pojo.dto.LineDTO;
|
||||
import com.njcn.device.pq.constant.Param;
|
||||
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
|
||||
import com.njcn.harmonic.pojo.po.algorithm.line.RMpMonitorEvaluateD;
|
||||
import com.njcn.influx.pojo.po.DataFlicker;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.collections4.ListUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RMpMonitorEvaluateDServiceImpl extends MppServiceImpl<RMpMonitorEvaluateDMapper, RMpMonitorEvaluateD> implements IRMpMonitorEvaluateDService {
|
||||
|
||||
private final CommLineClient commLineClient;
|
||||
private final DataVInfluxdbService dataVInfluxdbService;
|
||||
private final PmsAbnormalRulesMapper pmsAbnormalRulesMapper;
|
||||
private final DataIntegrityRateInfluxService dataIntegrityRateInfluxService;
|
||||
|
||||
/***
|
||||
* 监测点报表--日统计
|
||||
* @author hongawen
|
||||
* @date 2023/11/3 14:48
|
||||
* @param calculatedParam 查询条件
|
||||
*/
|
||||
@Override
|
||||
public void handleDay(CalculatedParam calculatedParam) {
|
||||
//1、取出规则
|
||||
List<PmsAbnormalRules> pmsAbnormalRules = pmsAbnormalRulesMapper.selectList(null);
|
||||
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);
|
||||
//以尺寸1000分片
|
||||
List<List<String>> pendingIds = ListUtils.partition(calculatedParam.getIdList(), 100);
|
||||
for (List<String> pendingId : pendingIds) {
|
||||
List<LineDTO> lineDTOList = commLineClient.getLineDetailBatch(pendingId).getData();
|
||||
List<RMpMonitorEvaluateD> rMpMonitorEvaluateDS = new ArrayList<>();
|
||||
for (LineDTO lineDTO : lineDTOList) {
|
||||
if (ObjectUtil.isNotNull(lineDTO)) {
|
||||
/*todo 统计间隔,电压等级取值方式后期提供融合版本接口获取不然pms,pqs系统取值方式不一样*/
|
||||
/*统计间隔*/
|
||||
Integer statisticalInterval = lineDTO.getTimeInterval();
|
||||
/*电压等级*/
|
||||
Double voltage = Double.parseDouble(lineDTO.getVoltageLevel());
|
||||
List<DataVFiveItemDTO> fiveItems = dataVInfluxdbService.getFiveItems(lineDTO.getLineId(), beginDay, endDay, statisticalInterval);
|
||||
RMpMonitorEvaluateD rMpMonitorEvaluateD = new RMpMonitorEvaluateD();
|
||||
rMpMonitorEvaluateD = calculateRMpMonitorEvaluateDPO(rMpMonitorEvaluateD, fiveItems, pmsAbnormalRules, voltage, lineDTO);
|
||||
Date date = DateUtil.parse(beginDay);
|
||||
DataFlicker twoFlickerData = dataIntegrityRateInfluxService.getTwoFlickerData(lineDTO.getLineId(), date, 5);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(beginDay, DatePattern.NORM_DATETIME_PATTERN);
|
||||
|
||||
if (Objects.isNull(twoFlickerData)) {
|
||||
rMpMonitorEvaluateD.setPltCount(0);
|
||||
rMpMonitorEvaluateD.setPstCount(0);
|
||||
} else {
|
||||
rMpMonitorEvaluateD.setPltCount(twoFlickerData.getPltCount());
|
||||
rMpMonitorEvaluateD.setPstCount(twoFlickerData.getPstCount());
|
||||
}
|
||||
rMpMonitorEvaluateD.setAllMinuteCount(fiveItems.size());
|
||||
rMpMonitorEvaluateD.setDeviceId(lineDTO.getDevId());
|
||||
rMpMonitorEvaluateD.setDataDate(localDate);
|
||||
rMpMonitorEvaluateD.setMeasurementPointId(lineDTO.getLineId());
|
||||
rMpMonitorEvaluateDS.add(rMpMonitorEvaluateD);
|
||||
}
|
||||
}
|
||||
if (CollUtil.isNotEmpty(rMpMonitorEvaluateDS)) {
|
||||
this.saveOrUpdateBatchByMultiId(rMpMonitorEvaluateDS, 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 3、频率在【45,55】之间;
|
||||
* 4、相电压有效值在【0.85p.u.,1.2p.u.】之间;p.u=电压等级/1.732
|
||||
* 5、线电压有效值在【0.85p.u.,1.2p.u.】之间;p.u=电压等级
|
||||
* 6、电压总谐波畸变率在【0.1%,20%】之间;
|
||||
* 7、负序电压不平衡度在【0,20%】。满足以上条件则是一条有效数据
|
||||
* @Param: [fiveItems, pmsAbnormalRules, voltage]
|
||||
* @return: java.lang.Integer
|
||||
* @Author: clam
|
||||
* @Date: 2023/2/23
|
||||
*/
|
||||
private RMpMonitorEvaluateD calculateRMpMonitorEvaluateDPO(RMpMonitorEvaluateD rMpMonitorEvaluateD, List<DataVFiveItemDTO> fiveItems, List<PmsAbnormalRules> pmsAbnormalRules, Double voltage, LineDTO data) {
|
||||
|
||||
Integer freqCount = 0;
|
||||
Integer unbalanceCount = 0;
|
||||
Integer phaseVoltageCount = 0;
|
||||
Integer lineVoltageCount = 0;
|
||||
Integer vThdCount = 0;
|
||||
Integer effectiveMinuteCount = 0;
|
||||
|
||||
PmsAbnormalRules freqLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_FREQ)).collect(Collectors.toList()).get(0);
|
||||
PmsAbnormalRules rmsLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_RMS)).collect(Collectors.toList()).get(0);
|
||||
PmsAbnormalRules rms_lvrLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_RMS_LVR)).collect(Collectors.toList()).get(0);
|
||||
PmsAbnormalRules v_thdLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_V_THD)).collect(Collectors.toList()).get(0);
|
||||
PmsAbnormalRules v_unbalanceLimit = pmsAbnormalRules.stream().filter(temp -> Objects.equals(temp.getTarget(), Param.TARGET_V_UNBALANCE)).collect(Collectors.toList()).get(0);
|
||||
if (!CollectionUtils.isEmpty(fiveItems)) {
|
||||
for (DataVFiveItemDTO fiveItem : fiveItems) {
|
||||
Double freqMax = fiveItem.getFreqMax();
|
||||
Double freqMin = fiveItem.getFreqMin();
|
||||
|
||||
Double rmsMax = fiveItem.getRmsMax();
|
||||
Double rmsMin = fiveItem.getRmsMin();
|
||||
Double vThdMax = fiveItem.getVThdMax();
|
||||
Double vThdMin = fiveItem.getVThdMin();
|
||||
|
||||
Double vUnbalanceMax = fiveItem.getVUnbalanceMax();
|
||||
Double vUnbalanceMin = fiveItem.getVUnbalanceMin();
|
||||
Double rmsLvrMax = fiveItem.getRmsLvrMax();
|
||||
Double rmsLvrMin = fiveItem.getRmsLvrMin();
|
||||
|
||||
Boolean rmsflag = false;
|
||||
Boolean rmsLvrflag = false;
|
||||
Boolean vUnbalanceflag = false;
|
||||
|
||||
freqCount++;
|
||||
unbalanceCount++;
|
||||
phaseVoltageCount++;
|
||||
lineVoltageCount++;
|
||||
vThdCount++;
|
||||
effectiveMinuteCount++;
|
||||
// 先注释掉 校验跑出监测点
|
||||
// if (freqLimit.getLowerLimit() <= freqMin && freqMax <= freqLimit.getUpperLimit()) {
|
||||
// freqCount++;
|
||||
// }
|
||||
// /*,监测点的接线方式,如果是星形接线这个指标要判断,角形界面则不判断,默认它是正常的*/
|
||||
// if (Objects.equals("0", data.getPtType())) {
|
||||
// if (rmsLimit.getLowerLimit() * (voltage / 1.732) <= rmsMin && rmsMax <= rmsLimit.getUpperLimit() * (voltage / 1.732)) {
|
||||
// phaseVoltageCount++;
|
||||
// rmsflag = true;
|
||||
// }
|
||||
// } else {
|
||||
// rmsflag = true;
|
||||
// phaseVoltageCount++;
|
||||
// }
|
||||
// if (Objects.equals("1", data.getPtPhaseType())) {
|
||||
// if (rms_lvrLimit.getLowerLimit() * voltage <= rmsLvrMin && rmsLvrMax <= rms_lvrLimit.getUpperLimit() * voltage) {
|
||||
// lineVoltageCount++;
|
||||
// rmsLvrflag = true;
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
// rmsLvrflag = true;
|
||||
// lineVoltageCount++;
|
||||
//
|
||||
// }
|
||||
// if (Objects.equals("1", data.getPtPhaseType()) && Objects.equals("0", data.getPtType())) {
|
||||
// if (v_unbalanceLimit.getLowerLimit() <= vUnbalanceMin && vUnbalanceMax <= v_unbalanceLimit.getUpperLimit()
|
||||
// ) {
|
||||
// unbalanceCount++;
|
||||
// vUnbalanceflag = true;
|
||||
// }
|
||||
// } else {
|
||||
// unbalanceCount++;
|
||||
// vUnbalanceflag = true;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if (v_thdLimit.getLowerLimit() <= vThdMin && vThdMax <= v_thdLimit.getUpperLimit()) {
|
||||
// vThdCount++;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// if (freqLimit.getLowerLimit() <= freqMin && freqMax <= freqLimit.getUpperLimit() &&
|
||||
// rmsflag &&
|
||||
// rmsLvrflag &&
|
||||
// v_thdLimit.getLowerLimit() <= vThdMin && vThdMax <= v_thdLimit.getUpperLimit() &&
|
||||
// vUnbalanceflag
|
||||
//
|
||||
// ) {
|
||||
// effectiveMinuteCount++;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
rMpMonitorEvaluateD.setEffectiveMinuteCount(effectiveMinuteCount);
|
||||
rMpMonitorEvaluateD.setFreqCount(freqCount);
|
||||
rMpMonitorEvaluateD.setPhaseVoltageCount(phaseVoltageCount);
|
||||
rMpMonitorEvaluateD.setLineVoltageCount(lineVoltageCount);
|
||||
rMpMonitorEvaluateD.setVThdCount(vThdCount);
|
||||
rMpMonitorEvaluateD.setUnbalanceCount(unbalanceCount);
|
||||
return rMpMonitorEvaluateD;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.njcn.algorithm.support.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.njcn.device.pq.pojo.po.PmsAbnormalRules;
|
||||
|
||||
/**
|
||||
* PmsAbnormalRulesMapper
|
||||
*
|
||||
* @author qijian
|
||||
* @date 2022/10/26
|
||||
*/
|
||||
public interface PmsAbnormalRulesMapper extends BaseMapper<PmsAbnormalRules> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?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.algorithm.support.mapper.PmsAbnormalRulesMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,56 @@
|
||||
#当前服务的基本信息
|
||||
microservice:
|
||||
ename: @artifactId@
|
||||
name: '@name@'
|
||||
version: @version@
|
||||
sentinel:
|
||||
url: @sentinel.url@
|
||||
gateway:
|
||||
url: @gateway.url@
|
||||
server:
|
||||
port: 10223
|
||||
#feign接口开启服务熔断降级处理
|
||||
feign:
|
||||
sentinel:
|
||||
enabled: true
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: @artifactId@
|
||||
#nacos注册中心以及配置中心的指定
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
ip: @service.server.url@
|
||||
server-addr: @nacos.url@
|
||||
namespace: @nacos.namespace@
|
||||
config:
|
||||
server-addr: @nacos.url@
|
||||
namespace: @nacos.namespace@
|
||||
file-extension: yaml
|
||||
shared-configs:
|
||||
- data-id: share-config.yaml
|
||||
refresh: true
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
|
||||
liteflow:
|
||||
rule-source: config/liteflow.el.xml
|
||||
# rule-source-ext-data-map:
|
||||
# serverAddr: @nacos.url@
|
||||
# dataId: prepare_liteflow
|
||||
# group: DEFAULT_GROUP
|
||||
# namespace: @nacos.namespace@
|
||||
when-max-wait-time: 600000
|
||||
print-banner: false
|
||||
|
||||
|
||||
#项目日志的配置
|
||||
logging:
|
||||
config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml
|
||||
level:
|
||||
root: error
|
||||
|
||||
|
||||
mqtt:
|
||||
client-id: @artifactId@${random.value}
|
||||
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<flow>
|
||||
<chain name="measurement_point">
|
||||
THEN(
|
||||
rMpSurplusAbnormalD
|
||||
);
|
||||
</chain>
|
||||
<chain name="org_point">
|
||||
THEN(
|
||||
WHEN(rDimBusbarHarmnic.tag("r_dim_busbar_harmnic_d")),
|
||||
rOperatingIndex.tag("r_operating_index_d"),
|
||||
rOperatingIndex.tag("r_operating_index_m"),
|
||||
rOperatingIndex.tag("r_operating_index_q"),
|
||||
rOperatingIndex.tag("r_operating_index_y"),
|
||||
rStatOrg.tag("r_stat_org_d"),
|
||||
rStatOrg.tag("r_stat_org_m"),
|
||||
rStatOrg.tag("r_stat_org_q"),
|
||||
rStatOrg.tag("r_stat_org_y"),
|
||||
rStatPollutionOrg.tag("r_stat_pollution_org_d"),
|
||||
rStatPollutionOrg.tag("r_stat_pollution_org_m"),
|
||||
rStatPollutionOrg.tag("r_stat_pollution_org_q"),
|
||||
rStatPollutionOrg.tag("r_stat_pollution_org_y"),
|
||||
rStatHarmonic.tag("r_stat_harmonic_d"),
|
||||
rStatHarmonic.tag("r_stat_harmonic_m"),
|
||||
rStatHarmonic.tag("r_stat_harmonic_q"),
|
||||
rStatHarmonic.tag("r_stat_harmonic_y"),
|
||||
rStatHarmonicVoltage.tag("r_stat_harmonic_voltage_d"),
|
||||
rStatHarmonicVoltage.tag("r_stat_harmonic_voltage_m"),
|
||||
rStatHarmonicOrg.tag("r_stat_harmonic_org_d"),
|
||||
rStatHarmonicOrg.tag("r_stat_harmonic_org_m"),
|
||||
rStatHarmonicOrg.tag("r_stat_harmonic_org_q"),
|
||||
rStatHarmonicOrg.tag("r_stat_harmonic_org_y"),
|
||||
rStatEvent.tag("r_stat_event_d"),
|
||||
rStatEvent.tag("r_stat_event_m"),
|
||||
rStatEvent.tag("r_stat_event_q"),
|
||||
rStatEvent.tag("r_stat_event_y"),
|
||||
rStatEventVoltage.tag("r_stat_event_voltage_d"),
|
||||
rStatEventVoltage.tag("r_stat_event_voltage_m"),
|
||||
rStatEventOrg.tag("r_stat_event_org_d"),
|
||||
rStatEventOrg.tag("r_stat_event_org_m"),
|
||||
rStatEventOrg.tag("r_stat_event_org_q"),
|
||||
rStatEventOrg.tag("r_stat_event_org_y"),
|
||||
rStatEventLoadType.tag("r_stat_load_type_d"),
|
||||
rStatEventLoadType.tag("r_stat_load_type_m"),
|
||||
rStatEventLoadType.tag("r_stat_load_type_q"),
|
||||
rStatEventLoadType.tag("r_stat_load_type_y"),
|
||||
rStatAlarmCount.tag("r_stat_alarm_count_w"),
|
||||
rStatAlarmCount.tag("r_stat_area_alarm_count_m"),
|
||||
rDimBusTarget.tag("r_dim_bus_target_d"),
|
||||
rDimBusTarget.tag("r_dim_bus_target_m"),
|
||||
rDimBusTarget.tag("r_dim_bus_target_y"),
|
||||
rDimObjTarget.tag("r_dim_obj_target_d"),
|
||||
rDimObjTarget.tag("r_dim_obj_target_m"),
|
||||
rDimObjTarget.tag("r_dim_obj_target_y"),
|
||||
rDimObjGlobal.tag("r_dim_obj_global_d"),
|
||||
rDimObjGlobal.tag("r_dim_obj_global_m"),
|
||||
rDimObjGlobal.tag("r_dim_obj_global_y"),
|
||||
rDimObjBusStationEventStartis.tag("r_dim_bus_station_event_startis_d"),
|
||||
rDimObjBusStationEventStartis.tag("r_dim_bus_station_event_startis_m"),
|
||||
rDimObjBusStationEventStartis.tag("r_dim_bus_station_event_startis_y")
|
||||
);
|
||||
</chain>
|
||||
<chain name="sub_station">
|
||||
THEN(
|
||||
THEN(
|
||||
rUploadSubStatisticalData
|
||||
),
|
||||
THEN(
|
||||
rStatSubstation.tag("r_stat_substation_d"),
|
||||
rStatSubstation.tag("r_stat_substation_m"),
|
||||
rStatSubstation.tag("r_stat_substation_q"),
|
||||
rStatSubstation.tag("r_stat_substation_y")
|
||||
),
|
||||
THEN(
|
||||
rStatPollutionSubstation.tag("r_stat_pollution_substation_d"),
|
||||
rStatPollutionSubstation.tag("r_stat_pollution_substation_m"),
|
||||
rStatPollutionSubstation.tag("r_stat_pollution_substation_q"),
|
||||
rStatPollutionSubstation.tag("r_stat_pollution_substation_y")
|
||||
)
|
||||
);
|
||||
</chain>
|
||||
<chain name="dim_station_busbar">
|
||||
THEN(
|
||||
THEN(
|
||||
rDimObjEvent.tag("r_dim_obj_event_d"),
|
||||
rDimObjEvent.tag("r_dim_obj_event_m"),
|
||||
rDimObjEvent.tag("r_dim_obj_event_y")
|
||||
)
|
||||
);
|
||||
</chain>
|
||||
<chain name="genera_trix">
|
||||
THEN(
|
||||
THEN(
|
||||
rBusbarVoltage.tag("r_dim_voltage_d"),
|
||||
rBusbarVoltage.tag("r_dim_voltage_m"),
|
||||
rBusbarVoltage.tag("r_dim_voltage_y")
|
||||
),
|
||||
THEN(
|
||||
rStatBusbarHarmonicY
|
||||
),
|
||||
THEN(
|
||||
rStatOrgBusBarVoltage.tag("r_stat_org_busbar_voltage_d"),
|
||||
rStatOrgBusBarVoltage.tag("r_stat_org_busbar_voltage_m"),
|
||||
rStatOrgBusBarVoltage.tag("r_stat_org_busbar_voltage_q"),
|
||||
rStatOrgBusBarVoltage.tag("r_stat_org_busbar_voltage_y")
|
||||
)
|
||||
);
|
||||
</chain>
|
||||
<chain name="upload_org">
|
||||
THEN(
|
||||
rUploadPointStatisticalData,
|
||||
rUploadEvaluationData,
|
||||
pqTypicalSourceCreatePOService
|
||||
|
||||
);
|
||||
</chain>
|
||||
<chain name="orgSub_station">
|
||||
THEN(
|
||||
THEN(
|
||||
rStatSubstationVoltage.tag("r_stat_substation_voltage_m")
|
||||
)
|
||||
);
|
||||
</chain>
|
||||
</flow>
|
||||
Reference in New Issue
Block a user