This commit is contained in:
yuejiajun 2025-09-29 14:58:32 +08:00
parent 91428f8a90
commit 0043bc5bac
22 changed files with 72 additions and 401 deletions

View File

@ -7,7 +7,7 @@ import com.example.demo.parser.process.constant.ParserProcessConstant;
import com.example.demo.parser.process.domain.ConfigValue;
import com.example.demo.parser.process.domain.LevelConfig;
import com.example.demo.parser.process.domain.ValueConfig;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Method;

View File

@ -6,7 +6,7 @@ import com.alibaba.fastjson2.JSON;
import com.example.demo.parser.process.domain.ConfigValue;
import com.example.demo.parser.process.domain.LevelConfig;
import com.example.demo.parser.process.domain.ValueConfig;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import com.hubspot.jinjava.Jinjava;
import com.hubspot.jinjava.JinjavaConfig;

View File

@ -1,4 +1,4 @@
package com.example.demo.draft.demo043.util;
package com.example.demo.parser.process.util;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;

View File

@ -1,17 +0,0 @@
# 自定义配置
xml-parser:
# 文件存储配置
file:
upload-dir: ${user.dir}/upload
temp-dir: ${user.dir}/temp
# 解析配置
parser:
default-encoding: UTF-8
validate-xml: true
# 转换配置
converter:
default-encoding: UTF-8
indent-size: 4

View File

@ -23,5 +23,5 @@ spring:
profiles:
active: dev
group:
dev: orm,h2,sqlite,parser,rule,springdoc
prod: orm,h2,sqlite,parser,rule
dev: orm,h2,sqlite,springdoc
prod: orm,h2,sqlite

View File

@ -4,7 +4,7 @@
{
"levelName": "platform",
"enableLoop": true,
"loopCount": "单个空中平台任务数据.架数",
"loopCount": "{{单个空中平台任务数据.架数}}",
"subLevels": [
{
"levelName": "comm",
@ -14,7 +14,7 @@
"values": [
{
"combined": false,
"value": "string tacanWorkChannel = \"单个空中平台任务数据.塔康工作频道\" # 塔康工作频道"
"value": "string tacanWorkChannel = \"{{单个空中平台任务数据.塔康工作频道}}\" # 塔康工作频道"
}
]
}
@ -32,7 +32,7 @@
"values": [
{
"combined": false,
"value": "string platformIdCardCode = \"单个空中平台任务数据.平台识别码\" # 平台识别码"
"value": "string platformIdCardCode = \"{{单个空中平台任务数据.平台识别码}}\" # 平台识别码"
}
]
},
@ -40,7 +40,7 @@
"values": [
{
"combined": false,
"value": "string platformIdCardNumber = \"单个空中平台任务数据.平台识别号\" # 平台识别号"
"value": "string platformIdCardNumber = \"{{单个空中平台任务数据.平台识别号}}\" # 平台识别号"
}
]
}
@ -62,8 +62,8 @@
}
],
"values": [
"单个空中平台任务数据.主挂载武器",
"单个空中平台任务数据.挂载类型"
"{{单个空中平台任务数据.主挂载武器}}",
"{{单个空中平台任务数据.挂载类型}}"
]
},
{
@ -81,8 +81,8 @@
}
],
"values": [
"单个空中平台任务数据.次挂载武器",
"单个空中平台任务数据.挂载类型"
"{{单个空中平台任务数据.次挂载武器}}",
"{{单个空中平台任务数据.挂载类型}}"
]
}
],
@ -107,8 +107,8 @@
}
],
"values": [
"单个空中平台任务数据.平台名称",
"单个空中平台任务数据.机型"
"{{单个空中平台任务数据.平台名称}}",
"{{单个空中平台任务数据.机型}}"
]
}
]

View File

@ -15,7 +15,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.日期时间使用模式"
"value": "{{空域数据.空域生效时间段.日期时间使用模式}}"
}
]
},
@ -25,7 +25,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.开始时间"
"value": "{{空域数据.空域生效时间段.开始时间}}"
}
]
},
@ -35,7 +35,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.结束时间"
"value": "{{空域数据.空域生效时间段.结束时间}}"
}
]
},
@ -45,7 +45,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.结束时间标识符"
"value": "{{空域数据.空域生效时间段.结束时间标识符}}"
}
]
},
@ -55,7 +55,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.间隔频率"
"value": "{{空域数据.空域生效时间段.间隔频率}}"
}
]
},
@ -65,7 +65,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.间隔结束时间"
"value": "{{空域数据.空域生效时间段.间隔结束时间}}"
}
]
},
@ -75,7 +75,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.相对时开始时间"
"value": "{{空域数据.空域生效时间段.相对时开始时间}}"
}
]
},
@ -85,7 +85,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.相对时结束数据"
"value": "{{空域数据.空域生效时间段.相对时结束数据}}"
}
]
},
@ -95,7 +95,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域生效时间段.时间类型"
"value": "{{空域数据.空域生效时间段.时间类型}}"
}
]
}
@ -113,7 +113,7 @@
"values": [
{
"combined": false,
"value": "空域数据.代表空域相关的控制点.控制点类型"
"value": "{{空域数据.代表空域相关的控制点.控制点类型}}"
}
]
},
@ -123,7 +123,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域几何数据.几何数据信息.纬度N 空域数据.空域几何数据.几何数据信息.经度E"
"value": "{{空域数据.空域几何数据.几何数据信息.纬度}}N {{空域数据.空域几何数据.几何数据信息.经度}}E"
}
]
},
@ -134,7 +134,7 @@
{
"combined": false,
"unit": "m",
"value": "空域数据.代表空域相关的控制点.控制点的顶高"
"value": "{{空域数据.代表空域相关的控制点.控制点的顶高}}"
}
]
},
@ -145,7 +145,7 @@
{
"combined": false,
"unit": "m",
"value": "空域数据.代表空域相关的控制点.控制点的底高"
"value": "{{空域数据.代表空域相关的控制点.控制点的底高}}"
}
]
},
@ -155,14 +155,14 @@
"values": [
{
"combined": false,
"value": "空域数据.代表空域相关的控制点.是否隐藏控制点"
"value": "{{空域数据.代表空域相关的控制点.是否隐藏控制点}}"
}
]
}
],
"values": [
"空域数据.代表空域相关的控制点.控制点ID",
"空域数据.代表空域相关的控制点.控制点名称"
"{{空域数据.代表空域相关的控制点.控制点ID}}",
"{{空域数据.代表空域相关的控制点.控制点名称}}"
]
},
{
@ -176,7 +176,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域几何数据.形状类型"
"value": "{{空域数据.空域几何数据.形状类型}}"
}
]
},
@ -186,7 +186,7 @@
"values": [
{
"combined": false,
"value": "空域数据.代表空域相关的控制点.控制点的坐标位置纬度N 空域数据.代表空域相关的控制点.控制点的坐标位置经度E"
"value": "{{空域数据.代表空域相关的控制点.控制点的坐标位置纬度}}N {{空域数据.代表空域相关的控制点.控制点的坐标位置经度}}E"
}
]
},
@ -196,7 +196,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域几何数据.数据点数目"
"value": "{{空域数据.空域几何数据.数据点数目}}"
}
]
}
@ -211,7 +211,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域ID"
"value": "{{空域数据.空域ID}}"
}
]
},
@ -221,7 +221,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域名称"
"value": "{{空域数据.空域名称}}"
}
]
},
@ -231,7 +231,7 @@
"values": [
{
"combined": false,
"value": "空域数据.协调措施所属的大类型"
"value": "{{空域数据.协调措施所属的大类型}}"
}
]
},
@ -241,7 +241,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域的具体协调措施类型"
"value": "{{空域数据.空域的具体协调措施类型}}"
}
]
},
@ -251,7 +251,7 @@
"values": [
{
"combined": false,
"value": "空域数据.空域管控状态"
"value": "{{空域数据.空域管控状态}}"
}
]
},

View File

@ -1,75 +0,0 @@
package com.example.demo.draft.demo043;
import com.alibaba.fastjson2.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.domain.LevelConfig;
import org.junit.jupiter.api.Test;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.charset.StandardCharsets;
import static org.junit.jupiter.api.Assertions.*;
/**
* LevelConfig loopCount字段集成测试
*/
class LoopCountIntegrationTest {
@Test
void testLoopCountFieldParsing() throws Exception {
// 读取default.json文件
String templateContent = Files.readString(
Path.of("src/main/resources/data/02-单个空中平台任务数据/default.json"),
StandardCharsets.UTF_8
);
// 解析JSON到ConfigDocument对象
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
// 验证解析结果
assertNotNull(document);
assertNotNull(document.getLevelConfigs());
assertEquals(1, document.getLevelConfigs().size());
LevelConfig platformLevel = document.getLevelConfigs().get(0);
// 验证关键字段
assertEquals("platform", platformLevel.getLevelName());
assertTrue(platformLevel.getEnableLoop(), "enableLoop字段应该为true");
assertEquals("单个空中平台任务数据.架数", platformLevel.getLoopCount(), "loopCount字段应该正确获取值");
System.out.println("✅ SUCCESS: loopCount字段已正确获取值: " + platformLevel.getLoopCount());
System.out.println("✅ SUCCESS: enableLoop字段已正确获取值: " + platformLevel.getEnableLoop());
}
@Test
void testApplicationTest__02Scenario() throws Exception {
// 模拟ApplicationTest__02中的场景
String templateContent = Files.readString(
Path.of("src/main/resources/data/02-单个空中平台任务数据/default.json"),
StandardCharsets.UTF_8
);
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
String result = JSON.toJSONString(document);
// 验证JSON序列化和反序列化过程
ConfigDocument reParsedDocument = JSON.parseObject(result, ConfigDocument.class);
assertNotNull(reParsedDocument);
assertNotNull(reParsedDocument.getLevelConfigs());
LevelConfig platformLevel = reParsedDocument.getLevelConfigs().get(0);
// 验证关键字段在序列化/反序列化后仍然正确
assertEquals("platform", platformLevel.getLevelName());
assertTrue(platformLevel.getEnableLoop());
assertEquals("单个空中平台任务数据.架数", platformLevel.getLoopCount());
System.out.println("✅ SUCCESS: ApplicationTest__02场景测试通过");
System.out.println("levelName: " + platformLevel.getLevelName());
System.out.println("enableLoop: " + platformLevel.getEnableLoop());
System.out.println("loopCount: " + platformLevel.getLoopCount());
}
}

View File

@ -1,147 +0,0 @@
package com.example.demo.draft.demo043.core;
import com.alibaba.fastjson2.JSON;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
import org.junit.jupiter.api.Test;
import java.util.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* EnhancedTemplateGenerator 测试类
* 用于验证 applyEnhancedProcessing 方法修复后的功能
*/
public class EnhancedTemplateGeneratorTest {
@Test
public void testApplyEnhancedProcessing_WithValueConfigs() {
// 构建包含 valueConfigs 的测试数据
Map<String, Object> testData = new HashMap<>();
// 构建 levelConfigs
List<Map<String, Object>> levelConfigs = new ArrayList<>();
// 构建平台层级配置
Map<String, Object> platformLevel = new HashMap<>();
platformLevel.put("levelName", "platform");
platformLevel.put("values", Arrays.asList("airspace", "AERIAL_REGION"));
// 构建平台层级的 valueConfigs
List<Map<String, Object>> platformValueConfigs = new ArrayList<>();
Map<String, Object> platformValueConfig = new HashMap<>();
platformValueConfig.put("valueName", "platform_config");
platformValueConfig.put("comment", "平台配置信息");
List<Map<String, Object>> platformConfigValues = new ArrayList<>();
Map<String, Object> configValue1 = new HashMap<>();
configValue1.put("value", "config_value_1");
configValue1.put("unit", "unit1");
platformConfigValues.add(configValue1);
platformValueConfig.put("values", platformConfigValues);
platformValueConfigs.add(platformValueConfig);
platformLevel.put("valueConfigs", platformValueConfigs);
// 构建子层级
List<Map<String, Object>> subLevels = new ArrayList<>();
// 时间窗口子层级
Map<String, Object> timeWindowLevel = new HashMap<>();
timeWindowLevel.put("levelName", "time_window");
timeWindowLevel.put("values", Arrays.asList("【不应该为空,实际有值】"));
timeWindowLevel.put("comment", "空域生效时间配置");
subLevels.add(timeWindowLevel);
// 控制点子层级
Map<String, Object> controlPointLevel = new HashMap<>();
controlPointLevel.put("levelName", "control_point");
controlPointLevel.put("values", Arrays.asList("CP001", "训练区中心"));
controlPointLevel.put("comment", "控制点ID和名称");
subLevels.add(controlPointLevel);
// 几何形状子层级
Map<String, Object> geometryLevel = new HashMap<>();
geometryLevel.put("levelName", "geometry");
geometryLevel.put("values", new ArrayList<>()); // 空数组
geometryLevel.put("comment", "空域几何形状配置");
// 几何形状的 valueConfigs
List<Map<String, Object>> geometryValueConfigs = new ArrayList<>();
Map<String, Object> geometryValueConfig = new HashMap<>();
geometryValueConfig.put("valueName", "geometry_config");
geometryValueConfig.put("comment", "几何形状配置");
List<Map<String, Object>> geometryConfigValues = new ArrayList<>();
Map<String, Object> configValue2 = new HashMap<>();
configValue2.put("value", "geometry_value_1");
configValue2.put("unit", "unit2");
geometryConfigValues.add(configValue2);
geometryValueConfig.put("values", geometryConfigValues);
geometryValueConfigs.add(geometryValueConfig);
geometryLevel.put("valueConfigs", geometryValueConfigs);
subLevels.add(geometryLevel);
platformLevel.put("subLevels", subLevels);
levelConfigs.add(platformLevel);
testData.put("levelConfigs", levelConfigs);
testData.put("conditionMap", new HashMap<>());
System.out.println("原始数据:");
System.out.println(JSON.toJSONString(testData));
// 应用增强处理
Map<String, Object> processedData = EnhancedTemplateGenerator.applyEnhancedProcessing(testData);
System.out.println("\n处理后的数据:");
System.out.println(JSON.toJSONString(processedData));
// 验证处理结果
assertNotNull(processedData, "处理后的数据不应为空");
assertTrue(processedData.containsKey("levelConfigs"), "处理后的数据应包含 levelConfigs");
@SuppressWarnings("unchecked")
List<Object> processedLevelConfigs = (List<Object>) processedData.get("levelConfigs");
assertFalse(processedLevelConfigs.isEmpty(), "处理后的 levelConfigs 不应为空");
// 验证平台层级的 valueConfigs 是否存在
@SuppressWarnings("unchecked")
Map<String, Object> processedPlatformLevel = (Map<String, Object>) processedLevelConfigs.get(0);
assertTrue(processedPlatformLevel.containsKey("valueConfigs"), "平台层级的 valueConfigs 不应丢失");
@SuppressWarnings("unchecked")
List<Object> platformValueConfigsResult = (List<Object>) processedPlatformLevel.get("valueConfigs");
assertFalse(platformValueConfigsResult.isEmpty(), "平台层级的 valueConfigs 不应为空");
// 验证几何形状层级的 valueConfigs 是否存在
@SuppressWarnings("unchecked")
List<Object> processedSubLevels = (List<Object>) processedPlatformLevel.get("subLevels");
assertFalse(processedSubLevels.isEmpty(), "子层级不应为空");
// 找到几何形状层级
Map<String, Object> processedGeometryLevel = null;
for (Object subLevel : processedSubLevels) {
@SuppressWarnings("unchecked")
Map<String, Object> subLevelMap = (Map<String, Object>) subLevel;
if ("geometry".equals(subLevelMap.get("levelName"))) {
processedGeometryLevel = subLevelMap;
break;
}
}
assertNotNull(processedGeometryLevel, "几何形状层级不应丢失");
assertTrue(processedGeometryLevel.containsKey("valueConfigs"), "几何形状层级的 valueConfigs 不应丢失");
@SuppressWarnings("unchecked")
List<Object> geometryValueConfigsResult = (List<Object>) processedGeometryLevel.get("valueConfigs");
assertFalse(geometryValueConfigsResult.isEmpty(), "几何形状层级的 valueConfigs 不应为空");
System.out.println("\n测试通过valueConfigs 数据已正确保留!");
}
}

View File

@ -1,93 +0,0 @@
package com.example.demo.draft.demo043.domain;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.domain.LevelConfig;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* LevelConfig JSON解析测试
*/
class LevelConfigTest {
@Test
void testLevelConfigJsonParsing() {
// 测试JSON数据包含enableLoop和loopCount字段
String json = """
{
"levelName": "platform",
"enableLoop": true,
"loopCount": "单个空中平台任务数据.架数",
"values": ["单个空中平台任务数据.平台名称", "单个空中平台任务数据.机型"],
"valueConfigs": [],
"subLevels": []
}
""";
// 解析JSON到LevelConfig对象
LevelConfig levelConfig = JSON.parseObject(json, LevelConfig.class);
// 验证字段值
assertNotNull(levelConfig);
assertEquals("platform", levelConfig.getLevelName());
assertTrue(levelConfig.getEnableLoop());
assertEquals("单个空中平台任务数据.架数", levelConfig.getLoopCount());
assertNotNull(levelConfig.getValues());
assertEquals(2, levelConfig.getValues().size());
System.out.println("LevelConfig解析成功:");
System.out.println("levelName: " + levelConfig.getLevelName());
System.out.println("enableLoop: " + levelConfig.getEnableLoop());
System.out.println("loopCount: " + levelConfig.getLoopCount());
}
@Test
void testConfigDocumentJsonParsing() {
// 测试完整的ConfigDocument JSON解析
String json = """
{
"conditionMap": {},
"levelConfigs": [
{
"levelName": "platform",
"enableLoop": true,
"loopCount": "单个空中平台任务数据.架数",
"values": ["单个空中平台任务数据.平台名称", "单个空中平台任务数据.机型"],
"valueConfigs": [
{
"valueName": "side",
"values": [
{
"combined": false,
"value": "red"
}
]
}
],
"subLevels": []
}
]
}
""";
// 解析JSON到ConfigDocument对象
ConfigDocument document = JSON.parseObject(json, ConfigDocument.class);
// 验证字段值
assertNotNull(document);
assertNotNull(document.getLevelConfigs());
assertEquals(1, document.getLevelConfigs().size());
LevelConfig levelConfig = document.getLevelConfigs().get(0);
assertEquals("platform", levelConfig.getLevelName());
assertTrue(levelConfig.getEnableLoop());
assertEquals("单个空中平台任务数据.架数", levelConfig.getLoopCount());
System.out.println("ConfigDocument解析成功:");
System.out.println("levelName: " + levelConfig.getLevelName());
System.out.println("enableLoop: " + levelConfig.getEnableLoop());
System.out.println("loopCount: " + levelConfig.getLoopCount());
}
}

View File

@ -11,13 +11,13 @@
// 7 XML标签值 部分内容需要确定统一单位例如 速度单位 m/s
// TODO XML 转成 JSON 可能存在的问题
// 8 XML标签一定存在部分数据是固定数据例如 各种类型枚举
// 9 XML标签属性 内容需要合并
// 97 增量更新问题例如 推演过程中数据是动态不断更新的这种是需要追加旧数据还是读到什么数据就是什么数据
// 98 允许组合规则条件生效
// 99 对接时需要一个字段一个字段对应
// DONE
// 8 XML标签一定存在部分数据是固定数据例如 各种类型枚举
// 10 XML标签 自定义函数问题
// 可以调用自定义函数
// 11 XML标签值存在一部分值需要拆分成多个数据

View File

@ -1,10 +1,10 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.core.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import java.io.File;
import java.io.IOException;

View File

@ -1,10 +1,10 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.core.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import java.io.File;
import java.io.IOException;
@ -44,8 +44,11 @@ public class ApplicationTest__02 {
}
// Step.2
String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
List<Object> list = JSON.parseArray(targetContent);
// String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
// List<Object> list = JSON.parseArray(targetContent);
// 通过 key 限制变量范围
List<Object> list = FormatUtil.loadJSON(processJSONFile);
String templateContent = Files.readString(Path.of(inputTemplateData), StandardCharsets.UTF_8);
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
@ -54,7 +57,8 @@ public class ApplicationTest__02 {
System.out.println(result);
for(Object obj: list) {
Map<String, String> map = JSON.parseObject(JSON.toJSONString(obj), Map.class);
result = FormatUtil.stealBeamsAndReplacePillars(result, map);
// result = FormatUtil.stealBeamsAndReplacePillars(result, map);
result = FormatUtil.stealBeamsAndReplacePillars(result, map, true, false, false);
}
// Step.3

View File

@ -1,10 +1,10 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.core.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import java.io.File;
import java.io.IOException;
@ -18,11 +18,11 @@ public class ApplicationTest__03 {
public static void main(String[] args) throws IOException {
List<String> dataList = new ArrayList<>() {{
// add("20250923_4c32c8.xml");
add("20250923_4c32c8.xml");
add("20250923_82c579.xml");
// add("20250923_422dc2.xml");
// add("20250923_b43a26.xml");
// add("20250923_c87aa1.xml");
add("20250923_422dc2.xml");
add("20250923_b43a26.xml");
add("20250923_c87aa1.xml");
}};
String prefix = "src/main/resources/data/03-任务航线/";

View File

@ -1,10 +1,10 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.core.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
import com.example.demo.draft.demo043.util.FormatUtil;
import com.example.demo.parser.process.util.FormatUtil;
import java.io.File;
import java.io.IOException;
@ -42,8 +42,11 @@ public class ApplicationTest__04 {
}
// Step.2
String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
List<Object> list = JSON.parseArray(targetContent);
// String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
// List<Object> list = JSON.parseArray(targetContent);
// 通过 key 限制变量范围
List<Object> list = FormatUtil.loadJSON(processJSONFile);
String templateContent = Files.readString(Path.of(inputTemplateData), StandardCharsets.UTF_8);
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
@ -52,7 +55,8 @@ public class ApplicationTest__04 {
System.out.println(result);
for(Object obj: list) {
Map<String, String> map = JSON.parseObject(JSON.toJSONString(obj), Map.class);
result = FormatUtil.stealBeamsAndReplacePillars(result, map);
// result = FormatUtil.stealBeamsAndReplacePillars(result, map);
result = FormatUtil.stealBeamsAndReplacePillars(result, map, true, false, false);
}
// Step.3

View File

@ -1,8 +1,6 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.domain;
import com.alibaba.fastjson2.JSON;
import com.example.demo.parser.process.domain.ConfigDocument;
import com.example.demo.parser.process.domain.LevelConfig;
import java.nio.file.Files;
import java.nio.file.Path;

View File

@ -1,4 +1,4 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.domain.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;

View File

@ -1,4 +1,4 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.domain.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;

View File

@ -1,4 +1,4 @@
package com.example.demo.draft.demo043;
package com.example.demo.parser.process.domain.draft;
import com.alibaba.fastjson.JSON;
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;

View File

@ -1,4 +1,4 @@
package com.example.demo;
package com.example.demo.parser.process.util;
import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;
@ -7,8 +7,6 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.AfterEach;
import static org.junit.jupiter.api.Assertions.*;
import com.example.demo.draft.demo043.util.FormatUtil;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@ -955,7 +953,7 @@ public class FormatUtilTest {
// 执行测试
Object result = FormatUtil.cartesianConvert(coordinate, params);
// 断言验证
String expectedResult = "HELLO WORLD";
String expectedResult = "待定 。。。";
log.info("预期结果:'{}'", expectedResult);
log.info("实际结果:'{}'", result);
assertEquals(expectedResult, result);
@ -1597,6 +1595,5 @@ public class FormatUtilTest {
return;
}
assertTrue(false);
}
}