From 014c21ad81088648db3ce5451cd0ce09ddd7dfe1 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Wed, 25 Jun 2025 13:42:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=95=B0=E6=8D=AE=E5=BA=93=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/utils/table/Operation.ets | 89 +++++++++++++------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/entry/src/main/ets/utils/table/Operation.ets b/entry/src/main/ets/utils/table/Operation.ets index 1ee6e41..1244837 100644 --- a/entry/src/main/ets/utils/table/Operation.ets +++ b/entry/src/main/ets/utils/table/Operation.ets @@ -110,6 +110,7 @@ export async function InitializeTheCentralTable(params: InitializeTheCentralTabl flag = await SqlInsertTable(tableList[i], JSON.parse(data) || []) } if (!flag) { + dConsole.error(InitTableTag, "本地文件初始化数据库失败"); Prompt.showToast({ message: '本地文件初始化数据库失败' }) @@ -129,45 +130,69 @@ export async function InitializeTheCentralTable(params: InitializeTheCentralTabl host: params.host } const res: ResponseDataType = await initialization(str) - console.log("解析完成") if (!res || !res.head || res.head.resultCode === "1") { resolve(false); } if (res && res.body) { - for (const key of Object.keys(res.body)) { - // 后端传递的字段首字母小写了,需要转换下 - let newKey = key.charAt(0).toUpperCase() + key.slice(1) - let isExit = CenterMap.has(newKey) - console.log(InitTableTag, "-------------------表名-----------------------", newKey, isExit) - if (isExit) { - console.log("可以插入的表", newKey, CenterMap.get(newKey)) - let arrList: Array | RecordType = [] - let value: PublicInfoType = Reflect.get(res.body, key) - if (value instanceof Array) { - arrList = value - } else { - arrList.push(value) - } + try { + const tableKeys = Object.keys(res.body); + const initPromises = tableKeys.map(async (key) => { + // 后端传递的字段首字母小写了,需要转换下 + const newKey = key.charAt(0).toUpperCase() + key.slice(1); + const isExit = CenterMap.has(newKey); + + dConsole.log(InitTableTag, "-------------------表名-----------------------", newKey, isExit); + + if (!isExit) return false; + + dConsole.log("可以插入的表", newKey, CenterMap.get(newKey)); + + let arrList: Array | RecordType = []; + const value: PublicInfoType = Reflect.get(res.body, key); + arrList = value instanceof Array ? value : [value]; + const folderPath = await fileUtil.initFolder(`/config/tableList`); - fileUtil.addFile(`${folderPath}/${RemappingTableName.get(newKey)}.txt`, JSON.stringify(arrList)) - try { - console.log(InitTableTag, "插入表操作", newKey) - console.log(InitTableTag, "插入表别名", RemappingTableName.get(newKey)) - console.log(InitTableTag, "插入表长度", arrList.length) - const result = await SqlInsertTable(RemappingTableName.get(newKey)!, arrList); - console.log(InitTableTag, "插入表结果,表", newKey, "结果", result) - if (!result) { - Prompt.showToast({ - message: '初始化数据库失败' - }) - } - console.log(InitTableTag, "~~~~~~~~~~~~~~~~~~~~~~初始化成功~~~~~~~~~~~~~~~~~~~~~~", newKey) - resolve(result) - } catch (e) { - dConsole.error(InitTableTag, "初始化表失败", JSON.stringify(e)) - reject(e) + await fileUtil.addFile( + `${folderPath}/${RemappingTableName.get(newKey)}.txt`, + JSON.stringify(arrList) + ); + + dConsole.log(InitTableTag, "插入表操作", newKey); + dConsole.log(InitTableTag, "插入表别名", RemappingTableName.get(newKey)); + dConsole.log(InitTableTag, "插入表长度", arrList.length); + + const result = await SqlInsertTable(RemappingTableName.get(newKey)!, arrList); + dConsole.log(InitTableTag, "插入表结果,表", newKey, "结果", result); + + if (!result) { + Prompt.showToast({ + message: `初始化表 ${newKey} 失败` + }); + return false; } + + dConsole.log(InitTableTag, "~~~~~~~~~~~~~~~~~~~~~~初始化成功~~~~~~~~~~~~~~~~~~~~~~", newKey); + return true; + }); + + const results = await Promise.all(initPromises); + const allSuccess = results.every(Boolean); + + if (allSuccess) { + resolve(true); + } else { + dConsole.error(InitTableTag, "部分表初始化失败", JSON.stringify(results)); + Prompt.showToast({ + message: '部分表初始化失败' + }); + reject(new Error('部分表初始化失败')); } + } catch (e) { + dConsole.error(InitTableTag, "初始化表失败", JSON.stringify(e)); + Prompt.showToast({ + message: '初始化数据库失败' + }); + reject(e); } } })