feat(system-ops): 新增系统运维模块及稳态数据视图优化
- 添加 system-ops 模块及其子模块 dbms 和 deploy - 实现数据库监控和系统部署的基础接口和服务 - 更新项目依赖配置和文档说明 - 优化稳态数据视图中线电压相位显示逻辑 - 完善线电压指标的相位解析和测试验证
This commit is contained in:
@@ -29,7 +29,7 @@ public class SteadyTrendIndicatorCatalog {
|
||||
List<SteadyTrendIndicatorDefinitionBO> result = new ArrayList<SteadyTrendIndicatorDefinitionBO>();
|
||||
result.add(indicator("V_RMS", "相电压有效值", "VOLTAGE", "电压趋势", "data_v", ABC_PHASES,
|
||||
fields(field("rms", "相电压有效值")), FULL_STATS, "V"));
|
||||
result.add(indicator("V_LINE_RMS", "线电压有效值", "VOLTAGE", "电压趋势", "data_v", T_PHASE,
|
||||
result.add(indicator("V_LINE_RMS", "线电压有效值", "VOLTAGE", "电压趋势", "data_v", ABC_PHASES,
|
||||
fields(field("rms_lvr", "线电压有效值")),
|
||||
FULL_STATS, "V"));
|
||||
result.add(indicator("FREQ", "频率", "FREQUENCY", "频率趋势", "data_v", T_PHASE,
|
||||
|
||||
@@ -33,6 +33,7 @@ import java.util.Map;
|
||||
public class SteadyDataViewTrendServiceImpl implements SteadyDataViewTrendService {
|
||||
|
||||
private static final String EMPTY_TEXT = "-";
|
||||
private static final String LINE_VOLTAGE_RMS_INDICATOR = "V_LINE_RMS";
|
||||
|
||||
private final SteadyTrendFieldResolver fieldResolver;
|
||||
private final SteadyInfluxQueryComponent influxQueryComponent;
|
||||
@@ -91,13 +92,29 @@ public class SteadyDataViewTrendServiceImpl implements SteadyDataViewTrendServic
|
||||
series.setIndicatorCode(field.getIndicatorCode());
|
||||
series.setIndicatorName(field.getIndicatorName());
|
||||
series.setSeriesName(field.getSeriesName());
|
||||
series.setPhase(field.getPhase());
|
||||
series.setPhase(resolveDisplayPhase(field));
|
||||
series.setStatType(field.getStatType());
|
||||
series.setUnit(field.getUnit());
|
||||
series.setPoints(points);
|
||||
return series;
|
||||
}
|
||||
|
||||
private String resolveDisplayPhase(SteadyTrendResolvedFieldBO field) {
|
||||
if (!LINE_VOLTAGE_RMS_INDICATOR.equals(field.getIndicatorCode())) {
|
||||
return field.getPhase();
|
||||
}
|
||||
if ("A".equals(field.getPhase())) {
|
||||
return "AB";
|
||||
}
|
||||
if ("B".equals(field.getPhase())) {
|
||||
return "BC";
|
||||
}
|
||||
if ("C".equals(field.getPhase())) {
|
||||
return "CA";
|
||||
}
|
||||
return field.getPhase();
|
||||
}
|
||||
|
||||
private void enrichLineNames(List<SteadyTrendResolvedFieldBO> fields) {
|
||||
List<String> lineIds = new ArrayList<String>();
|
||||
for (SteadyTrendResolvedFieldBO field : fields) {
|
||||
|
||||
@@ -54,7 +54,7 @@ class SteadyTrendFieldResolverTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldExpandTotalPhaseIndicatorWithoutRequestPhaseFilter() {
|
||||
void shouldExpandLineVoltageIndicatorWithQueryPhases() {
|
||||
SteadyTrendQueryParam param = new SteadyTrendQueryParam();
|
||||
param.setLineIds(Arrays.asList("line-001"));
|
||||
param.setIndicatorCodes(Arrays.asList("V_LINE_RMS"));
|
||||
@@ -63,9 +63,9 @@ class SteadyTrendFieldResolverTest {
|
||||
param.setTimeEnd("2026-05-01 01:00:00");
|
||||
|
||||
List<SteadyTrendResolvedFieldBO> fields = resolver.resolveFields(param);
|
||||
List<String> phases = fields.stream().map(SteadyTrendResolvedFieldBO::getPhase).collect(Collectors.toList());
|
||||
|
||||
Assertions.assertEquals(1, fields.size());
|
||||
Assertions.assertEquals("T", fields.get(0).getPhase());
|
||||
Assertions.assertEquals(Arrays.asList("A", "B", "C"), phases);
|
||||
Assertions.assertEquals("rms_lvr", fields.get(0).getField());
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.njcn.gather.steady.datavie.service.impl;
|
||||
|
||||
import com.njcn.gather.steady.datavie.component.SteadyInfluxQueryComponent;
|
||||
import com.njcn.gather.steady.datavie.component.SteadyTrendFieldResolver;
|
||||
import com.njcn.gather.steady.datavie.component.SteadyTrendIndicatorCatalog;
|
||||
import com.njcn.gather.steady.datavie.pojo.bo.SteadyTrendResolvedFieldBO;
|
||||
import com.njcn.gather.steady.datavie.pojo.param.SteadyTrendQueryParam;
|
||||
import com.njcn.gather.steady.datavie.pojo.vo.SteadyTrendQueryVO;
|
||||
import com.njcn.gather.tool.addledger.service.AddLedgerService;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* 稳态趋势查询服务测试。
|
||||
*/
|
||||
class SteadyDataViewTrendServiceImplTest {
|
||||
|
||||
@Test
|
||||
void shouldDisplayLineVoltagePhasesAsLinePairs() {
|
||||
SteadyInfluxQueryComponent influxQueryComponent = mock(SteadyInfluxQueryComponent.class);
|
||||
AddLedgerService addLedgerService = mock(AddLedgerService.class);
|
||||
SteadyDataViewTrendServiceImpl service = new SteadyDataViewTrendServiceImpl(
|
||||
new SteadyTrendFieldResolver(new SteadyTrendIndicatorCatalog()), influxQueryComponent, addLedgerService);
|
||||
when(addLedgerService.listLinePathByLineIds(eq(Collections.singletonList("line-001"))))
|
||||
.thenReturn(Collections.emptyMap());
|
||||
when(influxQueryComponent.queryTrendPoints(any(SteadyTrendResolvedFieldBO.class),
|
||||
any(LocalDateTime.class), any(LocalDateTime.class), eq(0))).thenReturn(Collections.emptyList());
|
||||
SteadyTrendQueryParam param = new SteadyTrendQueryParam();
|
||||
param.setLineIds(Collections.singletonList("line-001"));
|
||||
param.setIndicatorCodes(Collections.singletonList("V_LINE_RMS"));
|
||||
param.setStatTypes(Collections.singletonList("AVG"));
|
||||
param.setTimeStart("2026-05-01 00:00:00");
|
||||
param.setTimeEnd("2026-05-01 01:00:00");
|
||||
param.setQualityFlag(0);
|
||||
|
||||
SteadyTrendQueryVO result = service.queryTrend(param);
|
||||
List<String> phases = result.getSeries().stream()
|
||||
.map(series -> series.getPhase())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Assertions.assertEquals(Arrays.asList("AB", "BC", "CA"), phases);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user