@@ -8,8 +8,6 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil ;
import cn.hutool.core.util.StrUtil ;
import com.alibaba.nacos.shaded.com.google.gson.Gson ;
import com.fasterxml.jackson.core.JsonProcessingException ;
import com.fasterxml.jackson.databind.ObjectMapper ;
import com.njcn.access.pojo.dto.NoticeUserDto ;
import com.njcn.access.utils.SendMessageUtil ;
import com.njcn.csdevice.api.* ;
@@ -134,6 +132,13 @@ public class DataTaskServiceImpl implements IDataTaskService {
RStatLimitQueryParam rStatLimitQueryParam = RStatLimitQueryParam . builder ( ) . ids ( lineList ) . date ( date ) . endDate ( date ) . build ( ) ;
List < RStatLimitRateDPO > limitRates = rStatLimitRateDClient . monitorIdsGetLimitRateInfo ( rStatLimitQueryParam ) . getData ( ) ;
//获取监测点信息
Map < String , CsLineDTO > lineMap ;
if ( CollUtil . isNotEmpty ( allLine ) ) {
lineMap = allLine . stream ( ) . collect ( Collectors . toMap ( CsLineDTO : : getLineId , item - > item ) ) ;
} else {
lineMap = Collections . emptyMap ( ) ;
}
if ( CollUtil . isNotEmpty ( limitRates ) ) {
limitRates . forEach ( item - > {
//新增cs_harmonic数据
@@ -142,9 +147,14 @@ public class DataTaskServiceImpl implements IDataTaskService {
csharmonic . setId ( id ) ;
csharmonic . setLineId ( item . getLineId ( ) ) ;
csharmonic . setTime ( LocalDate . parse ( date ) ) ;
String tag = buildOverlimitTag ( item ) ;
//统计间隔
Integer lineInterval = 1 ;
if ( ! Objects . isNull ( lineMap . get ( item . getLineId ( ) ) ) & & lineMap . get ( item . getLineId ( ) ) . getLineInterval ( ) ! = 0 ) {
lineInterval = lineMap . get ( item . getLineId ( ) ) . getLineInterval ( ) ;
}
String tag = buildOverLimitTag ( item , lineInterval ) ;
if ( StringUtils . isNotBlank ( tag ) ) {
csharmonic . setTag ( buildOverl imitTag ( item ) ) ;
csharmonic . setTag ( buildOverL imitTag ( item , lineInterval )) ;
list1 . add ( csharmonic ) ;
//根据监测点id获取设备
@@ -787,64 +797,6 @@ public class DataTaskServiceImpl implements IDataTaskService {
// 按设备 ID 分组
Map < String , List < PqsCommunicate > > deviceCommMap = pqsCommunicates . stream ( )
. collect ( Collectors . groupingBy ( PqsCommunicate : : getDevId ) ) ;
// deviceCommMap.forEach((devId, commList) -> {
// // 按时间排序
// commList.sort(Comparator.comparing(PqsCommunicate::getTime));
//
// List<String> offlinePeriods = new ArrayList<>();
// String offlineStartTime = null;
// String offlineEndTime = null;
//
// if (commList.size() == 1) {
// // 只有一条数据的情况
// PqsCommunicate singleRecord = commList.get(0);
// if (singleRecord.getType() == 0) {
// // 掉线:从掉线时间到 24 点
// offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
// offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 23:59:59";
// } else {
// // 上线:从 0 点到上线时间
// offlineStartTime = DATE_TIME_FORMATTER.format(singleRecord.getTime()).substring(0, 10) + " 00:00:00";
// offlineEndTime = DATE_TIME_FORMATTER.format(singleRecord.getTime());
// }
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
// } else {
// // 多条数据的情况
// for (int i = 0; i < commList.size(); i++) {
// PqsCommunicate current = commList.get(i);
//
// if (current.getType() == 0) {
// // 掉线记录
// if (offlineStartTime == null) {
// offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime());
// }
// // 如果是最后一条记录,结束时间为 24 点
// if (i == commList.size() - 1) {
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 23:59:59";
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
// }
// } else {
// // 上线记录
// if (offlineStartTime != null) {
// // 有对应的掉线记录,形成完整时间段
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
// offlineStartTime = null;
// offlineEndTime = null;
// } else {
// // 没有对应的掉线记录,说明是从 0 点开始掉线
// offlineStartTime = DATE_TIME_FORMATTER.format(current.getTime()).substring(0, 10) + " 00:00:00";
// offlineEndTime = DATE_TIME_FORMATTER.format(current.getTime());;
// offlinePeriods.add(offlineStartTime + " ~ " + offlineEndTime);
// }
// }
// }
// }
// if (CollUtil.isNotEmpty(offlinePeriods)) {
// result.put(devId, offlinePeriods);
// }
// });
deviceCommMap . forEach ( ( devId , commList ) - > {
// 按时间排序
commList . sort ( Comparator . comparing ( PqsCommunicate : : getTime ) ) ;
@@ -927,7 +879,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
* @param item 越限统计数据
* @return 越限标签
*/
private String buildOverl imitTag ( RStatLimitRateDPO item ) {
private String buildOverL imitTag ( RStatLimitRateDPO item , Integer lineInterval ) {
StringBuilder tagBuilder = new StringBuilder ( ) ;
String planId = csHarmonicPlanLineFeignClient . getPlanIdByLineId ( item . getLineId ( ) ) . getData ( ) ;
@@ -946,32 +898,32 @@ public class DataTaskServiceImpl implements IDataTaskService {
if ( targetSet ! = null ) {
Integer freqDevOvertime = item . getFreqDevOvertime ( ) ;
if ( freqDevOvertime ! = null & & freqDevOvertime > 0 & & targetSet . contains ( " 频率偏差 " ) ) {
tagBuilder . append ( " 频率偏差越限 " ) . append ( freqDevOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 频率偏差越限 " ) . append ( Math . min ( freqDevOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer voltageDevOvertime = item . getVoltageDevOvertime ( ) ;
if ( voltageDevOvertime ! = null & & voltageDevOvertime > 0 & & targetSet . contains ( " 电压偏差 " ) ) {
tagBuilder . append ( " 电压偏差越限 " ) . append ( voltageDevOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 电压偏差越限 " ) . append ( Math . min ( voltageDevOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer ubalanceOvertime = item . getUbalanceOvertime ( ) ;
if ( ubalanceOvertime ! = null & & ubalanceOvertime > 0 & & targetSet . contains ( " 三相电压不平衡度 " ) ) {
tagBuilder . append ( " 三相电压不平衡度越限 " ) . append ( ubalanceOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 三相电压不平衡度越限 " ) . append ( Math . min ( ubalanceOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer flickerOvertime = item . getFlickerOvertime ( ) ;
if ( flickerOvertime ! = null & & flickerOvertime > 0 & & targetSet . contains ( " 闪变 " ) ) {
tagBuilder . append ( " 闪变越限 " ) . append ( flickerOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 闪变越限 " ) . append ( Math . min ( flickerOvertime * 120 , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer uaberranceOvertime = item . getUaberranceOvertime ( ) ;
if ( uaberranceOvertime ! = null & & uaberranceOvertime > 0 & & targetSet . contains ( " 电压总谐波畸变率 " ) ) {
tagBuilder . append ( " 电压总谐波畸变率越限 " ) . append ( uaberranceOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 电压总谐波畸变率越限 " ) . append ( Math . min ( uaberranceOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer iNegOvertime = item . getINegOvertime ( ) ;
if ( iNegOvertime ! = null & & iNegOvertime > 0 & & targetSet . contains ( " 负序电流 " ) ) {
tagBuilder . append ( " 负序电流越限 " ) . append ( iNegOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 负序电流越限 " ) . append ( Math . min ( iNegOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
for ( int i = 2 ; i < = 25 ; i + + ) {
@@ -980,7 +932,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
if ( value ! = null & & value > 0 ) {
String targetName = i + " 次谐波电压含有率 " ;
if ( targetSet . contains ( targetName ) ) {
tagBuilder . append ( i ) . append ( " 次谐波电压含有率越限 " ) . append ( value ) . append ( " 次 , " ) ;
tagBuilder . append ( i ) . append ( " 次谐波电压含有率越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
}
@@ -991,7 +943,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
if ( value ! = null & & value > 0 ) {
String targetName = i + " 次谐波电流有效值 " ;
if ( targetSet . contains ( targetName ) ) {
tagBuilder . append ( i ) . append ( " 次谐波电流有效值越限 " ) . append ( value ) . append ( " 次 , " ) ;
tagBuilder . append ( i ) . append ( " 次谐波电流有效值越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
}
@@ -1003,52 +955,52 @@ public class DataTaskServiceImpl implements IDataTaskService {
double harmonicOrder = i * 1 . 0 - 0 . 5 ;
String targetName = harmonicOrder + " 次间谐波电压含有率 " ;
if ( targetSet . contains ( targetName ) ) {
tagBuilder . append ( harmonicOrder ) . append ( " 次间谐波电压含有率越限 " ) . append ( value ) . append ( " 次 , " ) ;
tagBuilder . append ( harmonicOrder ) . append ( " 次间谐波电压含有率越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
}
} else {
Integer freqDevOvertime = item . getFreqDevOvertime ( ) ;
if ( freqDevOvertime ! = null & & freqDevOvertime > 0 ) {
tagBuilder . append ( " 频率偏差越限 " ) . append ( freqDevOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 频率偏差越限 " ) . append ( Math . min ( freqDevOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer voltageDevOvertime = item . getVoltageDevOvertime ( ) ;
if ( voltageDevOvertime ! = null & & voltageDevOvertime > 0 ) {
tagBuilder . append ( " 电压偏差越限 " ) . append ( voltageDevOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 电压偏差越限 " ) . append ( Math . min ( voltageDevOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer ubalanceOvertime = item . getUbalanceOvertime ( ) ;
if ( ubalanceOvertime ! = null & & ubalanceOvertime > 0 ) {
tagBuilder . append ( " 三相电压不平衡度越限 " ) . append ( ubalanceOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 三相电压不平衡度越限 " ) . append ( Math . min ( ubalanceOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer flickerOvertime = item . getFlickerOvertime ( ) ;
if ( flickerOvertime ! = null & & flickerOvertime > 0 ) {
tagBuilder . append ( " 闪变越限 " ) . append ( flickerOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 闪变越限 " ) . append ( Math . min ( flickerOvertime * 120 , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer uaberranceOvertime = item . getUaberranceOvertime ( ) ;
if ( uaberranceOvertime ! = null & & uaberranceOvertime > 0 ) {
tagBuilder . append ( " 电压总谐波畸变率越限 " ) . append ( uaberranceOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 电压总谐波畸变率越限 " ) . append ( Math . min ( uaberranceOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
Integer iNegOvertime = item . getINegOvertime ( ) ;
if ( iNegOvertime ! = null & & iNegOvertime > 0 ) {
tagBuilder . append ( " 负序电流越限 " ) . append ( iNegOvertime ) . append ( " 次 , " ) ;
tagBuilder . append ( " 负序电流越限 " ) . append ( Math . min ( iNegOvertime * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
String harmonicVoltageTag = buildHarmonicVoltageTags ( item , " " ) ;
String harmonicVoltageTag = buildHarmonicVoltageTags ( item , " " , lineInterval );
if ( StrUtil . isNotBlank ( harmonicVoltageTag ) ) {
tagBuilder . append ( harmonicVoltageTag ) ;
}
String harmonicCurrentTag = buildHarmonicCurrentTags ( item , " " ) ;
String harmonicCurrentTag = buildHarmonicCurrentTags ( item , " " , lineInterval );
if ( StrUtil . isNotBlank ( harmonicCurrentTag ) ) {
tagBuilder . append ( harmonicCurrentTag ) ;
}
String interharmonicTag = buildInterharmonicVoltageTags ( item , " " ) ;
String interharmonicTag = buildInterharmonicVoltageTags ( item , " " , lineInterval );
if ( StrUtil . isNotBlank ( interharmonicTag ) ) {
tagBuilder . append ( interharmonicTag ) ;
}
@@ -1057,124 +1009,6 @@ public class DataTaskServiceImpl implements IDataTaskService {
return trimTrailingComma ( tagBuilder . toString ( ) ) ;
}
// private String buildOverlimitTag(RStatLimitRateDPO item) {
// String tag = "";
//
// //获取监测点配置的稳态指标,如果没有配置则查询所有指标
// String planId = csHarmonicPlanLineFeignClient.getPlanIdByLineId(item.getLineId()).getData();
// if (planId != null) {
// CsHarmonicPlan csHarmonicPlan = csHarmonicPlanFeignClient.getById(planId).getData();
// String harmonicTarget = csHarmonicPlan.getHarmonicTarget();
// List<String> targetList = Arrays.asList(harmonicTarget.split(","));
//
// Integer freqDevOvertime = item.getFreqDevOvertime();
// if (freqDevOvertime > 0 && targetList.contains("频率偏差")) {
// tag = tag + "频率偏差越限" + freqDevOvertime + "次,";
// }
//
// Integer voltageDevOvertime = item.getVoltageDevOvertime();
// if (voltageDevOvertime > 0 && targetList.contains("电压偏差")) {
// tag = tag + "电压偏差越限" + voltageDevOvertime + "次,";
// }
//
// Integer ubalanceOvertime = item.getUbalanceOvertime();
// if (ubalanceOvertime > 0 && targetList.contains("三相电压不平衡度")) {
// tag = tag + "三相电压不平衡度越限" + ubalanceOvertime + "次,";
// }
//
// Integer flickerOvertime = item.getFlickerOvertime();
// if (flickerOvertime > 0 && targetList.contains("闪变")) {
// tag = tag + "闪变越限" + flickerOvertime + "次,";
// }
//
// Integer uaberranceOvertime = item.getUaberranceOvertime();
// if (uaberranceOvertime > 0 && targetList.contains("电压总谐波畸变率")) {
// tag = tag + "电压总谐波畸变率越限" + uaberranceOvertime + "次,";
// }
//
// Integer iNegOvertime = item.getINegOvertime();
// if (iNegOvertime > 0 && targetList.contains("负序电流")) {
// tag = tag + "负序电流越限" + iNegOvertime + "次,";
// }
//
// for (int i = 2; i <= 25; i++) {
// String fieldName = "uharm" + i + "Overtime";
// Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
// if (value != null && value > 0) {
// String targetName = i + "次谐波电压含有率";
// if (targetList.contains(targetName)) {
// tag = tag + i + "次谐波电压含有率越限" + value + "次,";
// }
// }
// }
//
// for (int i = 2; i <= 25; i++) {
// String fieldName = "iharm" + i + "Overtime";
// Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
// if (value != null && value > 0) {
// String targetName = i + "次谐波电流有效值";
// if (targetList.contains(targetName)) {
// tag = tag + i + "次谐波电流有效值越限" + value + "次,";
// }
// }
// }
//
// for (int i = 1; i <= 16; i++) {
// String fieldName = "inuharm" + i + "Overtime";
// Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
// if (value != null && value > 0) {
// double harmonicOrder = i * 1.0 - 0.5;
// String targetName = harmonicOrder + "次间谐波电压含有率";
// if (targetList.contains(targetName)) {
// tag = tag + harmonicOrder + "次间谐波电压含有率越限" + value + "次,";
// }
// }
// }
// } else {
// // 基础越限项
// Integer freqDevOvertime = item.getFreqDevOvertime();
// if (freqDevOvertime > 0) {
// tag = tag + "频率偏差越限" + freqDevOvertime + "次,";
// }
//
// Integer voltageDevOvertime = item.getVoltageDevOvertime();
// if (voltageDevOvertime > 0) {
// tag = tag + "电压偏差越限" + voltageDevOvertime + "次,";
// }
//
// Integer ubalanceOvertime = item.getUbalanceOvertime();
// if (ubalanceOvertime > 0) {
// tag = tag + "三相电压不平衡度越限" + ubalanceOvertime + "次,";
// }
//
// Integer flickerOvertime = item.getFlickerOvertime();
// if (flickerOvertime > 0) {
// tag = tag + "闪变越限" + flickerOvertime + "次,";
// }
//
// Integer uaberranceOvertime = item.getUaberranceOvertime();
// if (uaberranceOvertime > 0) {
// tag = tag + "电压总谐波畸变率越限" + uaberranceOvertime + "次,";
// }
//
// Integer iNegOvertime = item.getINegOvertime();
// if (iNegOvertime > 0) {
// tag = tag + "负序电流越限" + iNegOvertime + "次,";
// }
//
// // 谐波电压含有率( 2-25 次)
// tag = buildHarmonicVoltageTags(item, tag);
//
// // 谐波电流有效值( 2-25 次)
// tag = buildHarmonicCurrentTags(item, tag);
//
// // 间谐波电压含有率( 0.5-15.5 次)
// tag = buildInterharmonicVoltageTags(item, tag);
// }
// // 去除末尾逗号
// return trimTrailingComma(tag);
// }
/**
* 批量构建谐波电压含有率 tag( 2-25 次)
*
@@ -1182,16 +1016,16 @@ public class DataTaskServiceImpl implements IDataTaskService {
* @param originalTag 原始 tag
* @return 组装后的 tag
*/
public static String buildHarmonicVoltageTags ( Object item , String originalTag ) {
String tag = originalTag ;
public static String buildHarmonicVoltageTags ( Object item , String originalTag , Integer lineInterval ) {
StringBuilder tag = new StringBuilder ( originalTag ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
String fieldName = " uharm " + i + " Overtime " ;
Integer value = ( Integer ) ReflectUtil . getFieldValue ( item , fieldName ) ;
if ( value ! = null & & value > 0 ) {
tag = tag + i + " 次谐波电压含有率越限 " + value + " 次 , " ;
tag . append ( i ) . append ( " 次谐波电压含有率越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
return tag ;
return tag . toString ( ) ;
}
/**
@@ -1201,16 +1035,16 @@ public class DataTaskServiceImpl implements IDataTaskService {
* @param originalTag 原始 tag
* @return 组装后的 tag
*/
public static String buildHarmonicCurrentTags ( Object item , String originalTag ) {
String tag = originalTag ;
public static String buildHarmonicCurrentTags ( Object item , String originalTag , Integer lineInterval ) {
StringBuilder tag = new StringBuilder ( originalTag ) ;
for ( int i = 2 ; i < = 25 ; i + + ) {
String fieldName = " iharm " + i + " Overtime " ;
Integer value = ( Integer ) ReflectUtil . getFieldValue ( item , fieldName ) ;
if ( value ! = null & & value > 0 ) {
tag = tag + i + " 次谐波电流有效值越限 " + value + " 次 , " ;
tag . append ( i ) . append ( " 次谐波电流有效值越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
return tag ;
return tag . toString ( ) ;
}
/**
@@ -1220,17 +1054,17 @@ public class DataTaskServiceImpl implements IDataTaskService {
* @param originalTag 原始 tag
* @return 组装后的 tag
*/
public static String buildInterharmonicVoltageTags ( Object item , String originalTag ) {
String tag = originalTag ;
public static String buildInterharmonicVoltageTags ( Object item , String originalTag , Integer lineInterval ) {
StringBuilder tag = new StringBuilder ( originalTag ) ;
for ( int i = 1 ; i < = 16 ; i + + ) {
String fieldName = " inuharm " + i + " Overtime " ;
Integer value = ( Integer ) ReflectUtil . getFieldValue ( item , fieldName ) ;
if ( value ! = null & & value > 0 ) {
double harmonicOrder = i * 1 . 0 - 0 . 5 ;
tag = tag + harmonicOrder + " 次间谐波电压含有率越限 " + value + " 次 , " ;
tag . append ( harmonicOrder ) . append ( " 次间谐波电压含有率越限 " ) . append ( Math . min ( value * lineInterval , 1440 ) ) . append ( " 分钟 , " ) ;
}
}
return tag ;
return tag . toString ( ) ;
}
/**