feat(harmonic): 新增移动端线路详情功能并优化波形数据处理
- 添加 AppLineDetailVo 数据传输对象,支持移动端线路详情展示 - 增加 report 服务中的 buildHarmonic 相关方法重构,支持移动端线路详情查询 - 优化波形数据处理逻辑,新增波形数据抽点和裁剪功能,减少移动端数据传输量 - 修改 CommonStatisticalQueryParam 参数类,增加数据模型字段和电度事件类型支持 - 调整统计查询相关接口,支持全量和增量查询模式 - 移除 CredentialReqDTO 类,清理相关依赖 - 优化 CsAppReportServiceImpl 中的越限描述构建逻辑,使用时间转换工具 - 更新数据查询相关 Mapper XML 文件,调整数据过滤条件 - 修改设备用户服务实现,完善当前工程数据显示逻辑 - 优化 CsEquipmentDeliveryServiceImpl 中的数据集添加逻辑,支持电度数据类型 - 重构 CsEventController 和相关服务类,支持移动端波形数据分析 - 添加 Nacos 配置参数控制波形数据抽点和间隔区域处理行为
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package com.njcn.cssystem.utils;
|
||||
|
||||
public class TimeUtil {
|
||||
|
||||
/**
|
||||
* 将分钟数转换为友好显示格式
|
||||
* @param totalMinutes 总分钟数
|
||||
* @return 格式化后的字符串
|
||||
*/
|
||||
public static String convertMinutes(int totalMinutes) {
|
||||
if (totalMinutes < 0) {
|
||||
return "0分钟";
|
||||
}
|
||||
|
||||
int days = 0;
|
||||
int hours = 0;
|
||||
int minutes = totalMinutes;
|
||||
|
||||
// 计算天数(超过24小时)
|
||||
if (minutes >= 1440) { // 24 * 60 = 1440
|
||||
days = minutes / 1440;
|
||||
minutes = minutes % 1440;
|
||||
}
|
||||
|
||||
// 计算小时数(剩余分钟超过60分钟)
|
||||
if (minutes >= 60) {
|
||||
hours = minutes / 60;
|
||||
minutes = minutes % 60;
|
||||
}
|
||||
|
||||
// 构建返回字符串
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
if (days > 0) {
|
||||
result.append(days).append("天");
|
||||
}
|
||||
if (hours > 0) {
|
||||
result.append(hours).append("小时");
|
||||
}
|
||||
if (minutes > 0) {
|
||||
result.append(minutes).append("分钟");
|
||||
}
|
||||
|
||||
// 如果全部为0
|
||||
if (result.length() == 0) {
|
||||
result.append("0分钟");
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import com.njcn.csharmonic.pojo.po.*;
|
||||
import com.njcn.cssystem.pojo.po.CsAlarmSet;
|
||||
import com.njcn.cssystem.service.ICsAlarmSetService;
|
||||
import com.njcn.cssystem.service.IDataTaskService;
|
||||
import com.njcn.cssystem.utils.TimeUtil;
|
||||
import com.njcn.influx.imapper.PqsCommunicateMapper;
|
||||
import com.njcn.influx.pojo.po.PqsCommunicate;
|
||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||
@@ -898,32 +899,32 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
if (targetSet != null) {
|
||||
Integer freqDevOvertime = item.getFreqDevOvertime();
|
||||
if (freqDevOvertime != null && freqDevOvertime > 0 && targetSet.contains("频率偏差")) {
|
||||
tagBuilder.append("频率偏差越限").append(Math.min(freqDevOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("频率偏差越限").append(TimeUtil.convertMinutes(Math.min(freqDevOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer voltageDevOvertime = item.getVoltageDevOvertime();
|
||||
if (voltageDevOvertime != null && voltageDevOvertime > 0 && targetSet.contains("电压偏差")) {
|
||||
tagBuilder.append("电压偏差越限").append(Math.min(voltageDevOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("电压偏差越限").append(TimeUtil.convertMinutes(Math.min(voltageDevOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer ubalanceOvertime = item.getUbalanceOvertime();
|
||||
if (ubalanceOvertime != null && ubalanceOvertime > 0 && targetSet.contains("三相电压不平衡度")) {
|
||||
tagBuilder.append("三相电压不平衡度越限").append(Math.min(ubalanceOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("三相电压不平衡度越限").append(TimeUtil.convertMinutes(Math.min(ubalanceOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer flickerOvertime = item.getFlickerOvertime();
|
||||
if (flickerOvertime != null && flickerOvertime > 0 && targetSet.contains("闪变")) {
|
||||
tagBuilder.append("闪变越限").append(Math.min(flickerOvertime * 120,1440)).append("分钟,");
|
||||
tagBuilder.append("闪变越限").append(TimeUtil.convertMinutes(Math.min(flickerOvertime * 120,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer uaberranceOvertime = item.getUaberranceOvertime();
|
||||
if (uaberranceOvertime != null && uaberranceOvertime > 0 && targetSet.contains("电压总谐波畸变率")) {
|
||||
tagBuilder.append("电压总谐波畸变率越限").append(Math.min(uaberranceOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("电压总谐波畸变率越限").append(TimeUtil.convertMinutes(Math.min(uaberranceOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer iNegOvertime = item.getINegOvertime();
|
||||
if (iNegOvertime != null && iNegOvertime > 0 && targetSet.contains("负序电流")) {
|
||||
tagBuilder.append("负序电流越限").append(Math.min(iNegOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("负序电流越限").append(TimeUtil.convertMinutes(Math.min(iNegOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
for (int i = 2; i <= 25; i++) {
|
||||
@@ -932,7 +933,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
if (value != null && value > 0) {
|
||||
String targetName = i + "次谐波电压含有率";
|
||||
if (targetSet.contains(targetName)) {
|
||||
tagBuilder.append(i).append("次谐波电压含有率越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append(i).append("次谐波电压含有率越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -943,7 +944,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
if (value != null && value > 0) {
|
||||
String targetName = i + "次谐波电流有效值";
|
||||
if (targetSet.contains(targetName)) {
|
||||
tagBuilder.append(i).append("次谐波电流有效值越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append(i).append("次谐波电流有效值越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -955,39 +956,39 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
double harmonicOrder = i * 1.0 - 0.5;
|
||||
String targetName = harmonicOrder + "次间谐波电压含有率";
|
||||
if (targetSet.contains(targetName)) {
|
||||
tagBuilder.append(harmonicOrder).append("次间谐波电压含有率越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append(harmonicOrder).append("次间谐波电压含有率越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Integer freqDevOvertime = item.getFreqDevOvertime();
|
||||
if (freqDevOvertime != null && freqDevOvertime > 0) {
|
||||
tagBuilder.append("频率偏差越限").append(Math.min(freqDevOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("频率偏差越限").append(TimeUtil.convertMinutes(Math.min(freqDevOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer voltageDevOvertime = item.getVoltageDevOvertime();
|
||||
if (voltageDevOvertime != null && voltageDevOvertime > 0) {
|
||||
tagBuilder.append("电压偏差越限").append(Math.min(voltageDevOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("电压偏差越限").append(TimeUtil.convertMinutes(Math.min(voltageDevOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer ubalanceOvertime = item.getUbalanceOvertime();
|
||||
if (ubalanceOvertime != null && ubalanceOvertime > 0) {
|
||||
tagBuilder.append("三相电压不平衡度越限").append(Math.min(ubalanceOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("三相电压不平衡度越限").append(TimeUtil.convertMinutes(Math.min(ubalanceOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer flickerOvertime = item.getFlickerOvertime();
|
||||
if (flickerOvertime != null && flickerOvertime > 0) {
|
||||
tagBuilder.append("闪变越限").append(Math.min(flickerOvertime * 120,1440)).append("分钟,");
|
||||
tagBuilder.append("闪变越限").append(TimeUtil.convertMinutes(Math.min(flickerOvertime * 120,1440))).append("分钟,");
|
||||
}
|
||||
|
||||
Integer uaberranceOvertime = item.getUaberranceOvertime();
|
||||
if (uaberranceOvertime != null && uaberranceOvertime > 0) {
|
||||
tagBuilder.append("电压总谐波畸变率越限").append(Math.min(uaberranceOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("电压总谐波畸变率越限").append(TimeUtil.convertMinutes(Math.min(uaberranceOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
Integer iNegOvertime = item.getINegOvertime();
|
||||
if (iNegOvertime != null && iNegOvertime > 0) {
|
||||
tagBuilder.append("负序电流越限").append(Math.min(iNegOvertime * lineInterval,1440)).append("分钟,");
|
||||
tagBuilder.append("负序电流越限").append(TimeUtil.convertMinutes(Math.min(iNegOvertime * lineInterval,1440))).append(",");
|
||||
}
|
||||
|
||||
String harmonicVoltageTag = buildHarmonicVoltageTags(item, "", lineInterval);
|
||||
@@ -1022,7 +1023,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
String fieldName = "uharm" + i + "Overtime";
|
||||
Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
|
||||
if (value != null && value > 0) {
|
||||
tag.append(i).append("次谐波电压含有率越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tag.append(i).append("次谐波电压含有率越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
return tag.toString();
|
||||
@@ -1041,7 +1042,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
String fieldName = "iharm" + i + "Overtime";
|
||||
Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
|
||||
if (value != null && value > 0) {
|
||||
tag.append(i).append("次谐波电流有效值越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tag.append(i).append("次谐波电流有效值越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
return tag.toString();
|
||||
@@ -1061,7 +1062,7 @@ public class DataTaskServiceImpl implements IDataTaskService {
|
||||
Integer value = (Integer) ReflectUtil.getFieldValue(item, fieldName);
|
||||
if (value != null && value > 0) {
|
||||
double harmonicOrder = i * 1.0 - 0.5;
|
||||
tag.append(harmonicOrder).append("次间谐波电压含有率越限").append(Math.min(value * lineInterval,1440)).append("分钟,");
|
||||
tag.append(harmonicOrder).append("次间谐波电压含有率越限").append(TimeUtil.convertMinutes(Math.min(value * lineInterval,1440))).append(",");
|
||||
}
|
||||
}
|
||||
return tag.toString();
|
||||
|
||||
@@ -5,7 +5,10 @@ import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.njcn.access.pojo.dto.NoticeUserDto;
|
||||
import com.njcn.access.utils.SendMessageUtil;
|
||||
import com.njcn.csdevice.api.*;
|
||||
import com.njcn.csdevice.api.CsLedgerFeignClient;
|
||||
import com.njcn.csdevice.api.DeviceMessageFeignClient;
|
||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
import com.njcn.csdevice.api.EventLogsFeignClient;
|
||||
import com.njcn.csdevice.param.DeviceMessageParam;
|
||||
import com.njcn.csdevice.pojo.dto.DevDetailDTO;
|
||||
import com.njcn.csdevice.pojo.po.CsEventSendMsg;
|
||||
@@ -15,6 +18,7 @@ import com.njcn.cssystem.pojo.param.MsgSendParam;
|
||||
import com.njcn.cssystem.service.ICsEventUserService;
|
||||
import com.njcn.cssystem.service.IMsgSendService;
|
||||
import com.njcn.system.api.EpdFeignClient;
|
||||
import com.njcn.user.api.SmsSendFeignClient;
|
||||
import com.njcn.user.api.UserFeignClient;
|
||||
import com.njcn.user.pojo.po.User;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
Reference in New Issue
Block a user