Merge branch 'dev-czy'
This commit is contained in:
@@ -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("<Value ");
|
||||
valueNode.append("name=\"").append(escapeXml(name)).append("\" ");
|
||||
// 如果offset<0,需要调整指标名中的%int或int%格式
|
||||
String adjustedName = adjustPathWithOffset(name, matchedRule.getOffset());
|
||||
valueNode.append("name=\"").append(escapeXml(adjustedName)).append("\" ");
|
||||
valueNode.append("desc=\"").append(escapeXml(desc)).append("\" ");
|
||||
valueNode.append("type=\"").append(type).append("\" ");
|
||||
|
||||
if (matchedRule.getDoPath() != null && !matchedRule.getDoPath().isEmpty()) {
|
||||
valueNode.append("DO=\"").append(escapeXml(matchedRule.getDoPath())).append("\" ");
|
||||
}
|
||||
@@ -1088,7 +1123,7 @@ public class JsonToXmlConversionService {
|
||||
if (matchedRule.getCoefficient() != null && !matchedRule.getCoefficient().isEmpty()) {
|
||||
valueNode.append("Coefficient=\"").append(escapeXml(matchedRule.getCoefficient())).append("\" ");
|
||||
}
|
||||
if (matchedRule.getOffset() != null && !matchedRule.getOffset().isEmpty()) {
|
||||
if (matchedRule.getOffset() != null && !matchedRule.getOffset().isEmpty() && !matchedRule.getOffset().equals("0")) {
|
||||
valueNode.append("Offset=\"").append(escapeXml(matchedRule.getOffset())).append("\" ");
|
||||
}
|
||||
if (matchedRule.getPltFlag() != null && !matchedRule.getPltFlag().isEmpty()) {
|
||||
@@ -1115,6 +1150,48 @@ public class JsonToXmlConversionService {
|
||||
.replace("\"", """)
|
||||
.replace("'", "'");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据offset调整路径(DO或DA)
|
||||
* 当offset<0时,对路径中的[%-int]或[int%]格式增加-offset的值
|
||||
* @param path 原始路径(DO或DA)
|
||||
* @param offsetStr offset字符串值
|
||||
* @return 调整后的路径
|
||||
*/
|
||||
private String adjustPathWithOffset(String path, String offsetStr) {
|
||||
if (path == null || offsetStr == null || offsetStr.isEmpty()) {
|
||||
return path;
|
||||
}
|
||||
|
||||
try {
|
||||
int offset = Integer.parseInt(offsetStr);
|
||||
// 只有当offset<0时才需要调整
|
||||
if (offset >= 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<String> 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; }
|
||||
|
||||
@@ -217,14 +217,14 @@
|
||||
<Value name="SI_%0,49%" desc="间谐波电流幅值(f25-2475)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_SI_%0,49%" desc="间谐波电流幅值(f25-2475)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_SI_%0,49%" desc="间谐波电流幅值(f25-2475)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_I%1,50%" desc="谐波电流幅值(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="I%1,50%" desc="谐波电流幅值(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_I%1,50%" desc="谐波电流幅值(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_I%1,50%" desc="谐波电流幅值(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_IA%1,50%" desc="谐波电流相角(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="IA%1,50%" desc="谐波电流相角(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_IA%1,50%" desc="谐波电流相角(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_IA%1,50%" desc="谐波电流相角(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_I%2,50%" desc="谐波电流幅值(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="I%2,50%" desc="谐波电流幅值(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_I%2,50%" desc="谐波电流幅值(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_I%2,50%" desc="谐波电流幅值(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_IA%2,50%" desc="谐波电流相角(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="IA%2,50%" desc="谐波电流相角(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_IA%2,50%" desc="谐波电流相角(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_IA%2,50%" desc="谐波电流相角(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="ITHD" desc="电流总谐波畸变率平均值" type="6" DO="" DA="" Coefficient="1" />
|
||||
<Value name="MAX_ITHD" desc="电流总谐波畸变率最大值" type="6" DO="" DA="" Coefficient="1" />
|
||||
<Value name="MIN_ITHD" desc="电流总谐波畸变率最小值" type="6" DO="" DA="" Coefficient="1" />
|
||||
@@ -277,18 +277,18 @@
|
||||
<Value name="Q" desc="无功功率平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_Q" desc="无功功率最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_Q" desc="无功功率最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_P%1,50%" desc="谐波有功功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="P%1,50%" desc="谐波有功功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_P%1,50%" desc="谐波有功功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_P%1,50%" desc="谐波有功功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_Q%1,50%" desc="谐波无功功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="Q%1,50%" desc="谐波无功功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_Q%1,50%" desc="谐波无功功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_Q%1,50%" desc="谐波无功功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_S%1,50%" desc="谐波视在功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="S%1,50%" desc="谐波视在功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_S%1,50%" desc="谐波视在功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_S%1,50%" desc="谐波视在功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_P%2,50%" desc="谐波有功功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="P%2,50%" desc="谐波有功功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_P%2,50%" desc="谐波有功功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_P%2,50%" desc="谐波有功功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_Q%2,50%" desc="谐波无功功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="Q%2,50%" desc="谐波无功功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_Q%2,50%" desc="谐波无功功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_Q%2,50%" desc="谐波无功功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_S%2,50%" desc="谐波视在功率(2-50)95值" type="6" DO="" DA="" />
|
||||
<Value name="S%2,50%" desc="谐波视在功率(2-50)平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_S%2,50%" desc="谐波视在功率(2-50)最大值" type="6" DO="" DA="" />
|
||||
<Value name="MIN_S%2,50%" desc="谐波视在功率(2-50)最小值" type="6" DO="" DA="" />
|
||||
<Value name="G_P" desc="有功功率95值" type="6" DO="" DA="" />
|
||||
<Value name="P" desc="有功功率平均值" type="6" DO="" DA="" />
|
||||
<Value name="MAX_P" desc="有功功率最大值" type="6" DO="" DA="" />
|
||||
|
||||
@@ -43,10 +43,10 @@
|
||||
<Value name="间谐波电压有效值序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波95值值" desc="间谐波电压含有率(f25-2475)95值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="间谐波电压有效值序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="相电压间谐波含有率序列间谐波95值值" desc="间谐波电压含有率(f25-2475)95值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="相电压间谐波含有率序列间谐波平均值值" desc="间谐波电压含有率(f25-2475)平均值" type="6" DO="MHAI8$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="相电压间谐波含有率序列间谐波最大值值" desc="间谐波电压含有率(f25-2475)最大值" type="6" DO="MHAI9$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
<Value name="相电压间谐波含有率序列间谐波最小值值" desc="间谐波电压含有率(f25-2475)最小值" type="6" DO="MHAI10$MX$HPhV" DA="phs*Har[%-0]$mag$f" />
|
||||
|
||||
<Value name="相电压谐波含有率序列95值值" desc="谐波电压含有率(2-50)95值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
|
||||
<Value name="相电压谐波含有率序列平均值值" desc="谐波电压含有率(2-50)平均值" type="6" DO="MHAI2$MX$HPhV" DA="phs*Har[%-2]$mag$f" />
|
||||
@@ -281,6 +281,7 @@
|
||||
<Value name="相电压基波有效值实时数据值" desc="实时基波电压有效值" type="6" DO="MHAI$MX$FundPhV" DA="phs*$cVal$mag$f" Coefficient="1" />
|
||||
<Value name="相电压谐波含有率序列实时数据值" desc="实时2-50次谐波电压含有率" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$mag$f" Coefficient="1" Offset="0" />
|
||||
<Value name="间谐波电压有效值序列间谐波实时数据值" desc="实时1-50次间谐波电压含有率" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
|
||||
<Value name="相电压间谐波含有率序列间谐波实时数据值" desc="实时1-50次间谐波电压含有率" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-0]$mag$f" Coefficient="1" Offset="0" />
|
||||
<Value name="谐波电压有效值序列实时数据角度" desc="实时谐波电压相角(2-50)" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
|
||||
<Value name="相电压谐波含有率序列实时数据角度" desc="实时谐波电压相角(2-50)" type="6" DO="MHAI$MX$HPhV" DA="phs*Har[%-2]$ang$f" />
|
||||
<Value name="线电压偏差实时数据值" desc="实时线电压偏差" type="6" DO="MMXU$MX$LnVolDev" DA="phs*$cVal$mag$f" Coefficient="1"/>
|
||||
|
||||
Reference in New Issue
Block a user