feat(harmonic): 新增移动端线路详情功能并优化波形数据处理

- 添加 AppLineDetailVo 数据传输对象,支持移动端线路详情展示
- 增加 report 服务中的 buildHarmonic 相关方法重构,支持移动端线路详情查询
- 优化波形数据处理逻辑,新增波形数据抽点和裁剪功能,减少移动端数据传输量
- 修改 CommonStatisticalQueryParam 参数类,增加数据模型字段和电度事件类型支持
- 调整统计查询相关接口,支持全量和增量查询模式
- 移除 CredentialReqDTO 类,清理相关依赖
- 优化 CsAppReportServiceImpl 中的越限描述构建逻辑,使用时间转换工具
- 更新数据查询相关 Mapper XML 文件,调整数据过滤条件
- 修改设备用户服务实现,完善当前工程数据显示逻辑
- 优化 CsEquipmentDeliveryServiceImpl 中的数据集添加逻辑,支持电度数据类型
- 重构 CsEventController 和相关服务类,支持移动端波形数据分析
- 添加 Nacos 配置参数控制波形数据抽点和间隔区域处理行为
This commit is contained in:
xy
2026-06-03 10:22:18 +08:00
parent a6f424025a
commit cf691db0a6
39 changed files with 1393 additions and 900 deletions

View File

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

View File

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