diff --git a/TMLRoute的标题改为CA的标题/TMLInsertData_mxJPO.java b/TMLRoute的标题改为CA的标题/TMLInsertData_mxJPO.java new file mode 100644 index 0000000..4a84c66 --- /dev/null +++ b/TMLRoute的标题改为CA的标题/TMLInsertData_mxJPO.java @@ -0,0 +1,188 @@ +import com.matrixone.apps.domain.DomainObject; +import matrix.db.*; +import matrix.util.MatrixException; + +import java.io.*; +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +public class TMLInsertData_mxJPO { + + public void InsertData(Context context, String[] args) throws Exception { + Map params = new HashMap(); + params.put("SmallWalkInTestChamber", "小型步入式试验箱"); + params.put("LargeWalkInTestChamber", "大型步入式试验箱(大舱)"); + params.put("TemperatureAndHumidityChamber", "恒温恒湿箱"); + params.put("HighAndLowTemperatureChamber", "高低温箱"); + params.put("RackBox", "台架箱"); + params.put("RapidTemperatureChange", "快温变"); + params.put("TwoImpactBoxes", "两箱冲击箱"); + params.put("ThreeImpactBoxes", "三箱冲击箱"); + params.put("ThreeComprehensiveBoxes", "三综合箱"); + params.put("DirectCoolingMachine", "直冷机"); + params.put("Chiller", "冷水机"); + params.put("Other", "其它"); + + // 设置正确的文件路径 + // 在 Enovia/Matrix 环境中,建议使用绝对路径或相对项目路径 +// String filePath = "/opt/MatrixOne/jpo/File/liangqi.properties"; // Linux 路径示例 + // 或者使用相对路径 + String filePath = "jpo/File/liangqi.properties"; + + System.out.println("=== 开始保存数据到文件 ==="); + + // 1. 保存数据到文件 + saveToPropertiesFile(filePath, params); + + System.out.println("\n=== 开始从文件读取数据并打印 ==="); + + // 2. 从文件读取数据并打印 + Map loadedParams = loadFromPropertiesFile(filePath); + + // 3. 打印读取到的数据 + printLoadedData(loadedParams); + + System.out.println("\n=== 操作完成 ==="); + } + + // 保存为 Properties 文件 + public static void saveToPropertiesFile(String filePath, Map params) throws Exception { + System.out.println("正在保存数据到: " + filePath); + + // 确保目录存在 + File file = new File(filePath); + File parentDir = file.getParentFile(); + if (parentDir != null && !parentDir.exists()) { + boolean created = parentDir.mkdirs(); + System.out.println("创建目录: " + parentDir.getPath() + " - " + (created ? "成功" : "失败")); + } + + try (FileOutputStream fos = new FileOutputStream(filePath); + OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8")) { + + Properties props = new Properties(); + + // 添加所有参数 + for (Map.Entry entry : params.entrySet()) { + props.setProperty(entry.getKey(), entry.getValue().toString()); + } + + // 保存到文件,使用中文注释 + props.store(osw, "设备类型映射表\n# 英文键名 = 中文名称"); + + System.out.println("✓ 数据已成功保存到文件: " + filePath); + System.out.println(" 保存了 " + params.size() + " 条记录"); + + // 打印保存的内容预览 + System.out.println(" 保存的内容预览:"); + int count = 0; + for (Map.Entry entry : params.entrySet()) { + if (count++ < 3) { // 只显示前3条预览 + System.out.println(" " + entry.getKey() + " = " + entry.getValue()); + } + } + if (params.size() > 3) { + System.out.println(" ... 还有 " + (params.size() - 3) + " 条记录"); + } + + } catch (IOException e) { + System.err.println("✗ 保存文件失败: " + e.getMessage()); + e.printStackTrace(); + throw e; + } + } + + // 从 Properties 文件读取 + public static Map loadFromPropertiesFile(String filePath) { + Map loadedParams = new HashMap<>(); + + System.out.println("正在从文件读取: " + filePath); + + // 检查文件是否存在 + File file = new File(filePath); + if (!file.exists()) { + System.err.println("✗ 文件不存在: " + filePath); + return loadedParams; + } + + if (!file.canRead()) { + System.err.println("✗ 文件不可读: " + filePath); + return loadedParams; + } + + try (FileInputStream fis = new FileInputStream(filePath); + InputStreamReader isr = new InputStreamReader(fis, "UTF-8")) { + + Properties props = new Properties(); + props.load(isr); + + // 转换为 Map + for (String key : props.stringPropertyNames()) { + loadedParams.put(key, props.getProperty(key)); + } + + System.out.println("✓ 从文件成功加载了 " + loadedParams.size() + " 条记录"); + + } catch (IOException e) { + System.err.println("✗ 读取文件失败: " + e.getMessage()); + e.printStackTrace(); + } + + return loadedParams; + } + + // 打印读取到的数据 + public static void printLoadedData(Map loadedParams) { + if (loadedParams == null || loadedParams.isEmpty()) { + System.out.println("警告: 没有读取到任何数据!"); + return; + } + + System.out.println("\n=== 打印所有读取的数据 ==="); + System.out.println("序号 | 英文键名 | 中文名称"); + System.out.println("----|---------------------------------------|--------------------------------"); + + int index = 1; + for (Map.Entry entry : loadedParams.entrySet()) { + System.out.printf("%-4d| %-38s | %s%n", + index++, + entry.getKey(), + entry.getValue()); + } + + System.out.println("----|---------------------------------------|--------------------------------"); + System.out.println("总计: " + loadedParams.size() + " 条记录"); + + // 额外的统计分析 + System.out.println("\n=== 数据统计 ==="); + System.out.println("包含 '箱' 的记录数: " + + loadedParams.values().stream().filter(v -> v.contains("箱")).count()); + System.out.println("包含 '机' 的记录数: " + + loadedParams.values().stream().filter(v -> v.contains("机")).count()); + } + + // 添加一个专门的打印方法,用于在 Matrix 环境中显示 + public static void printToMatrixConsole(Map data) { + if (data == null || data.isEmpty()) { + System.out.println("No data to display."); + return; + } + + System.out.println("========================================="); + System.out.println("DEVICE TYPE MAPPING TABLE"); + System.out.println("========================================="); + System.out.println("ENGLISH KEY CHINESE NAME"); + System.out.println("-----------------------------------------"); + + for (Map.Entry entry : data.entrySet()) { + System.out.println(String.format("%-30s : %s", + entry.getKey(), + entry.getValue())); + } + + System.out.println("========================================="); + System.out.println("Total records: " + data.size()); + } +} \ No newline at end of file