From cbafe85c4a376cc637d8f9209ccef67464ccfaf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=AE=87=20=E8=94=A1?= <2418394595@qq.com> Date: Fri, 10 Jul 2026 11:20:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(mms-mapping):=20=E4=BF=AE=E5=A4=8D=E8=B0=90?= =?UTF-8?q?=E6=B3=A2=E6=95=B0=E6=8D=AE=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=92=8C=E5=81=8F=E7=A7=BB=E9=87=8F=E8=AE=A1=E7=AE=97=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改JiangSu_Config1.xml中谐波电流相关指标的命名规则 - 修改默认规则文件中相电压间谐波含有率序列的描述名称 - 添加相电压间谐波含有率序列实时数据值配置 - 更新JsonToXmlConversionService中遥测数据处理逻辑,将urcb相关标识修改为brcb - 新增calculateOffset方法用于计算指标偏移量 - 实现adjustPathWithOffset方法根据offset调整路径中的数值格式 - 添加offset字段到MetricInfo类中用于存储偏移信息 - 在规则匹配过程中传递offset值并在生成Value节点时应用偏移调整 --- .../component/JsonToXmlConversionService.java | 99 +++++++++++++++++-- .../resources/template/JiangSu_Config1.xml | 40 ++++---- .../src/main/resources/template/默认规则.txt | 9 +- 3 files changed, 114 insertions(+), 34 deletions(-) diff --git a/tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/JsonToXmlConversionService.java b/tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/JsonToXmlConversionService.java index c532c50..0426c25 100644 --- a/tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/JsonToXmlConversionService.java +++ b/tools/mms-mapping/src/main/java/com/njcn/gather/icd/mapping/component/JsonToXmlConversionService.java @@ -188,12 +188,15 @@ public class JsonToXmlConversionService { String name = reportItem.getName(); if (name.contains("urcbFluc") || - name.contains("urcbStHarm") || - name.contains("urcbStIHarm") || - name.contains("urcbStMMXU") || - name.contains("urcbStMSQI") || + name.contains("brcbFluc") || + name.contains("urcbRtHarm") || + name.contains("urcbRtIHarm") || + name.contains("urcbRtMMXU") || + name.contains("urcbRtMSQI") || name.contains("urcbPLT") || name.contains("urcbPST") || + name.contains("brcbPLT") || + name.contains("brcbPST") || name.contains("urcbFlicker") || name.contains("urcbStatistic")|| name.contains("urcbRealData")) { @@ -771,6 +774,7 @@ public class JsonToXmlConversionService { if(2==configType && fullKey.contains("线电压总有效值")){ daPath = "1_" + daPath; } + int offset=calculateOffset(sdiItem.getName(), typeItem.getName(), doiItem); MetricInfo info = new MetricInfo(); info.setLnClass(dataSetGroup.getLnClass()); info.setLnInst(instItem.getInst()); @@ -781,6 +785,7 @@ public class JsonToXmlConversionService { info.setStart(doiItem.getStart()); info.setEnd(doiItem.getEnd()); info.setBaseFlag(doiItem.getBaseflag()); + info.setOffset(offset); metrics.put(fullKey.toLowerCase(), info); } } @@ -829,10 +834,15 @@ public class JsonToXmlConversionService { int start = doiItem.getStart(); if (baseflag == 1) { - boolean isInterHarmonic = isInterHarmonicMetric(doiItem); + boolean isInterHarmonic = isInterHarmonicMetric(doiItem);//间谐波判断 int m = isInterHarmonic ? 0 : 2; int i = m - start; - sb.append("[%-").append(i).append("]"); + //判断是Offset是否需要 + if(i<0){ + sb.append("[%-0]"); + }else { + sb.append("[%-").append(i).append("]"); + } } else { sb.append("[").append(start).append("]"); } @@ -848,6 +858,28 @@ public class JsonToXmlConversionService { } return sb.toString(); } + + private int calculateOffset(String sdiName, String typeName, DoiItem doiItem) { + int offset=0; + if (sdiName != null && !sdiName.isEmpty()){ + if (sdiName.endsWith("Har") && doiItem != null) { + int baseflag = doiItem.getBaseflag(); + int start = doiItem.getStart(); + if (baseflag == 1) { + boolean isInterHarmonic = isInterHarmonicMetric(doiItem);//间谐波判断 + int m = isInterHarmonic ? 0 : 2; + int i = m - start; + + //判断是Offset是否需要 + if(i<0){ + offset = i; + } + } + } + } + + return offset; + } /** * 标准化相别名称,将具体相别转换为通配符格式 @@ -906,6 +938,8 @@ public class JsonToXmlConversionService { MetricInfo metric = mappingMetrics.get(rule.getName()); rule.setDoPath(metric.getDoPath()); rule.setDaPath(metric.getDaPath()); + // 传递offset值,将Integer转换为String + rule.setOffset(String.valueOf(metric.getOffset())); applicable.put(ruleKey, rule); matched = true; addMethodDescribe(methodDescribeList, "✓ 规则匹配成功: " + ruleKey + " -> DO=" + rule.getDoPath() + ", DA=" + rule.getDaPath()); @@ -1066,10 +1100,11 @@ public class JsonToXmlConversionService { RuleBasedXmlMappingService.ValueRule matchedRule = applicableRules.get(desc); if (matchedRule != null) { StringBuilder valueNode = new StringBuilder("= 0) { + return path; + } + + int adjustment = -offset; + + // 匹配 %数字,数字% 格式并调整(如 %0,49%) + java.util.regex.Pattern pattern3 = java.util.regex.Pattern.compile("%(\\d+),(\\d+)%"); + java.util.regex.Matcher matcher3 = pattern3.matcher(path); + StringBuffer result3 = new StringBuffer(); + while (matcher3.find()) { + int startVal = Integer.parseInt(matcher3.group(1)); + int endVal = Integer.parseInt(matcher3.group(2)); + int newStart = startVal + adjustment; + int newEnd = endVal + adjustment; + matcher3.appendReplacement(result3, "%"+newStart+","+newEnd+"%"); + } + matcher3.appendTail(result3); + path = result3.toString(); + + return path; + } catch (NumberFormatException e) { + // 如果offset无法解析为整数,返回原始路径 + return path; + } + } private void addMethodDescribe(List methodDescribeList, String message) { if (methodDescribeList == null || message == null || message.trim().isEmpty()) { @@ -1231,7 +1308,9 @@ public class JsonToXmlConversionService { private int end; private int baseCount; private int baseFlag; - + private int offset; + public int getOffset() {return offset;} + public void setOffset(int offset) {this.offset = offset;} public String getLnClass() { return lnClass; } public void setLnClass(String lnClass) { this.lnClass = lnClass; } public String getLnInst() { return lnInst; } diff --git a/tools/mms-mapping/src/main/resources/template/JiangSu_Config1.xml b/tools/mms-mapping/src/main/resources/template/JiangSu_Config1.xml index 2f5da52..261fcb7 100644 --- a/tools/mms-mapping/src/main/resources/template/JiangSu_Config1.xml +++ b/tools/mms-mapping/src/main/resources/template/JiangSu_Config1.xml @@ -217,14 +217,14 @@ - - - - - - - - + + + + + + + + @@ -277,18 +277,18 @@ - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/tools/mms-mapping/src/main/resources/template/默认规则.txt b/tools/mms-mapping/src/main/resources/template/默认规则.txt index f080dbb..1532e22 100644 --- a/tools/mms-mapping/src/main/resources/template/默认规则.txt +++ b/tools/mms-mapping/src/main/resources/template/默认规则.txt @@ -43,10 +43,10 @@ - - - - + + + + @@ -281,6 +281,7 @@ +