fix: 优化初始化数据库操作
This commit is contained in:
		
							parent
							
								
									637e41248c
								
							
						
					
					
						commit
						014c21ad81
					
				| @ -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> | RecordType = [] | ||||
|           let value: PublicInfoType = Reflect.get(res.body, key) | ||||
|           if (value instanceof Array) { | ||||
|             arrList = value | ||||
|           } else { | ||||
|             arrList.push(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 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> | RecordType = []; | ||||
|           const value: PublicInfoType = Reflect.get(res.body, key); | ||||
|           arrList = value instanceof Array ? value : [value]; | ||||
| 
 | ||||
|           const folderPath = await fileUtil.initFolder(`/config/tableList`); | ||||
|           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); | ||||
|             console.log(InitTableTag, "插入表结果,表", newKey, "结果", result) | ||||
|           dConsole.log(InitTableTag, "插入表结果,表", newKey, "结果", result); | ||||
| 
 | ||||
|           if (!result) { | ||||
|             Prompt.showToast({ | ||||
|                 message: '初始化数据库失败' | ||||
|               }) | ||||
|               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('部分表初始化失败')); | ||||
|         } | ||||
|             console.log(InitTableTag, "~~~~~~~~~~~~~~~~~~~~~~初始化成功~~~~~~~~~~~~~~~~~~~~~~", newKey) | ||||
|             resolve(result) | ||||
|       } catch (e) { | ||||
|             dConsole.error(InitTableTag, "初始化表失败", JSON.stringify(e)) | ||||
|             reject(e) | ||||
|           } | ||||
|         } | ||||
|         dConsole.error(InitTableTag, "初始化表失败", JSON.stringify(e)); | ||||
|         Prompt.showToast({ | ||||
|           message: '初始化数据库失败' | ||||
|         }); | ||||
|         reject(e); | ||||
|       } | ||||
|     } | ||||
|   }) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user