From 7b45c1f0f9e52ed733df1ba6642503b9fcc3c7d3 Mon Sep 17 00:00:00 2001 From: wangzhongjie Date: Fri, 7 Mar 2025 11:54:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E6=93=8D=E4=BD=9C=E4=B8=8A=E5=B1=82=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/main/ets/config/LogEnum.ets | 1 + entry/src/main/ets/config/index.ets | 1 + entry/src/main/ets/pages/Register.ets | 2 +- .../main/ets/utils/{DbSql.ts => DbSql.ets} | 28 +++- entry/src/main/ets/utils/table/Operation.ets | 92 +++++++++++- .../src/main/ets/utils/table/Relationship.ets | 138 ++++++++++++------ 6 files changed, 201 insertions(+), 61 deletions(-) create mode 100644 entry/src/main/ets/config/LogEnum.ets create mode 100644 entry/src/main/ets/config/index.ets rename entry/src/main/ets/utils/{DbSql.ts => DbSql.ets} (87%) diff --git a/entry/src/main/ets/config/LogEnum.ets b/entry/src/main/ets/config/LogEnum.ets new file mode 100644 index 00000000..596fbb7b --- /dev/null +++ b/entry/src/main/ets/config/LogEnum.ets @@ -0,0 +1 @@ +export const DbTag = '[DBTag]'; \ No newline at end of file diff --git a/entry/src/main/ets/config/index.ets b/entry/src/main/ets/config/index.ets new file mode 100644 index 00000000..d7778648 --- /dev/null +++ b/entry/src/main/ets/config/index.ets @@ -0,0 +1 @@ +export * from "./LogEnum"; \ No newline at end of file diff --git a/entry/src/main/ets/pages/Register.ets b/entry/src/main/ets/pages/Register.ets index 52d6c54f..467c0896 100644 --- a/entry/src/main/ets/pages/Register.ets +++ b/entry/src/main/ets/pages/Register.ets @@ -31,7 +31,7 @@ struct Index { this.deviceName = value.getLocalDeviceInfoSync().deviceName this.deviceNo = value.getLocalDeviceInfoSync().deviceId.substring(0, 10).toUpperCase() this.ip = 'MAC-' + this.deviceNo - AppStorage.setOrCreate('deviceNo', 'MAC-' + this.deviceNo) + AppStorage.SetOrCreate('deviceNo', 'MAC-' + this.deviceNo) }); } catch (error) { diff --git a/entry/src/main/ets/utils/DbSql.ts b/entry/src/main/ets/utils/DbSql.ets similarity index 87% rename from entry/src/main/ets/utils/DbSql.ts rename to entry/src/main/ets/utils/DbSql.ets index b3108fc7..cd3e810b 100644 --- a/entry/src/main/ets/utils/DbSql.ts +++ b/entry/src/main/ets/utils/DbSql.ets @@ -1,6 +1,7 @@ import relationalStore from '@ohos.data.relationalStore' import common from '@ohos.app.ability.common' import { BusinessError } from '@ohos.base' +import { DbTag } from "../config" export interface ColumnInfo { name: string, @@ -29,7 +30,7 @@ class DbUtils { console.info("db rdbStore init success") resolve() }) - .catch((err: any) => { + .catch((err: BusinessError) => { console.error(`db rdbStore init fail reason:${err}`); reject(err) }) @@ -46,7 +47,7 @@ class DbUtils { console.info("sql createTable success") resolve() }) - .catch((err) => { + .catch((err: BusinessError) => { console.error(`sql createTable fail err:${JSON.stringify(err)}`); reject(err) }) @@ -76,7 +77,7 @@ class DbUtils { if (this.rdbStore) { this.rdbStore?.executeSql(sql).then(() => { resolve("") - }).catch((err) => { + }).catch((err: BusinessError) => { reject(err) }) } else { @@ -86,7 +87,7 @@ class DbUtils { } // 插入数据 - insertData(tableName: string, obj: any): Promise { + insertData(tableName: string, obj: ESObject): Promise { return new Promise((resolve, reject) => { if (this.rdbStore) { this.rdbStore?.insert(tableName, obj, (err, res) => { @@ -104,6 +105,19 @@ class DbUtils { }) } + // 根据表名删除表 + deleteByName(tableName: string): Promise { + return new Promise((resolve, reject) => { + const SQL = `DELETE FROM ${tableName};` + this.executeSql(SQL).then(res => { + console.log(DbTag, "删除表成功!表名:", tableName) + resolve(true) + }).catch((err: BusinessError) => { + console.log(DbTag, "删除表失败!表名:", tableName, "错误信息:", JSON.stringify(err)) + reject(false) + }) + }) + } // 插入表数据 // insertData(tableName: string, obj: object, columns: ColumnInfo[]): Promise { @@ -123,9 +137,9 @@ class DbUtils { resolve(null) } else { res.goToNextRow() - resolve(res.getLong(0) as unknown as T) + resolve(res.getLong(0) as T) } - }).catch((err) => { + }).catch((err: BusinessError) => { console.error(`sql queryCount fail err:${JSON.stringify(err)}`); reject(err) }) @@ -199,7 +213,7 @@ class DbUtils { obj[info.name] = val; }); // 3.3.将对象填入结果数组 - arr.push(obj as unknown as T); // 将 obj 断言为 T 类型 + arr.push(obj as T); // 将 obj 断言为 T 类型 } return arr; } diff --git a/entry/src/main/ets/utils/table/Operation.ets b/entry/src/main/ets/utils/table/Operation.ets index 1d923752..976c3f8f 100644 --- a/entry/src/main/ets/utils/table/Operation.ets +++ b/entry/src/main/ets/utils/table/Operation.ets @@ -1,13 +1,91 @@ -import DB from '../DbSql'; +import { TableDefinition, User } from '../../model'; +import DB, { ColumnInfo, ColumnType } from '../DbSql'; import { ParameterPlatform } from './Relationship'; +import { BusinessError } from '@ohos.base'; // 建表操作 -export async function initTable() { - // const keys = Object.keys(ParameterPlatform); - // for (const key of keys) { - // await DB.executeSql(ParameterPlatform[key].sqlCreate); - // } +export async function InitTable() { Object.keys(ParameterPlatform).forEach(async (item) => { - await DB.executeSql(ParameterPlatform[MA_MARKRULE]); + await DB.executeSql(ParameterPlatform[item].sqlCreate); }); } + +// 插表操作 +export function SqlInsertTable(tableName: string, data: Array, delFlag = true): Promise { + return new Promise((resolve, reject) => { + data.forEach((element, index) => { + element.id = !delFlag ? `${index + data.length}` : `${index}` + }) + DB.clearTable(tableName).then((res) => { + const columns = Object.keys(data[0]).join(', '); + const values = data + .map((item) => { + const rowValues = Object.values(item) + .map((value: string | number) => (typeof value === 'string' ? `'${value}'` : value)) + return `(${rowValues})`; + }) + .join(', '); + let INSERT_SQL = "INSERT INTO " + tableName + + " (" + columns + ") VALUES " + values + DB.executeSql(INSERT_SQL).then(() => { + console.log('sql insert,', res, 'tableName', tableName) + resolve(true) + }).catch((err: BusinessError) => { + console.log('sql insert err,', JSON.stringify(err), 'tableName', tableName) + reject(err) + }) + }) + }) +} + +// 参数平台 + + +// TODO 后续废弃这个方法,直接调用SqlInsertTable +// 依据数组和表名更新sql表 +export function UpdateTableByArray(tableName: string, arr: Array): Promise { + return SqlInsertTable(tableName, arr) +} + + +//依据表名同步获取数据 +export async function GetSyncData(tableName: string): Promise { + return new Promise((resolve, reject) => { + const columns: ColumnInfo[] = ParameterPlatform[tableName].columns.map((res: string) => { + return { + name: res, + columnName: res, + type: ColumnType.STRING + } as ColumnInfo + }) + // TODO 需要完善此处类型 + DB.queryListBySql(`select * from ${tableName}`, columns).then(() => { + resolve(true) + }).catch((err: BusinessError) => { + reject(err) + }) + }) +} + +// TODO 后续废弃这个方法,直接调用DB.deleteByName +// 删除表 +export async function DeleteSyncTable(tableName: string): Promise { + return new Promise((resolve, reject) => { + DB.deleteByName(tableName).then(() => { + resolve(true) + }).catch(() => { + reject(false) + }) + }) +} + + + + + + + + + + + diff --git a/entry/src/main/ets/utils/table/Relationship.ets b/entry/src/main/ets/utils/table/Relationship.ets index c285603c..9969f49c 100644 --- a/entry/src/main/ets/utils/table/Relationship.ets +++ b/entry/src/main/ets/utils/table/Relationship.ets @@ -26,51 +26,97 @@ import { } from './TableMessage'; -export const ParameterPlatform: TableMapType = { - MA_MARKRULE: MA_MARKRULE, - MA_SYSTEMPARM: MA_SYSTEMPARM, - MA_MAP_COLLECT: MA_MAP_COLLECT, - MA_MAP_COLLECT_SHAPE: MA_MAP_COLLECT_SHAPE, - MA_MAP_ITEMCLASS: MA_MAP_ITEMCLASS, - MA_MAP_POINT: MA_MAP_POINT, - MA_MAP_POINT_ITEM: MA_MAP_POINT_ITEM, - MA_MAP_ROAD: MA_MAP_ROAD, - MA_MAP_ROAD_LANE: MA_MAP_ROAD_LANE, - MAP_SUBITEM: MA_MAP_SUBITEM, - MA_MAP_SUBITEM: MA_MAP_SUBITEM, - MA_SYSSET: MA_SYSSET, - ES_CARINFO: ES_CARINFO, - ES_EXAMPOINTDETAIL: ES_EXAMPOINTDETAIL, - MA_MARKRULESET: MA_MARKRULESET, - MA_CDSBINFO: MA_CDSBINFO, - MA_ITEMINFO: MA_ITEMINFO, - MA_T_CARPARMSET: MA_T_CARPARMSET, - ES_CAR_VIDEO_PARAMETER: ES_CAR_VIDEO_PARAMETER, - USER: USER, - USERLIST: USERLIST, - IpConfigTable: IpConfigTable, - DeviceInfoTable: DeviceInfoTable, - CommonConstants: accountTable -} +// export const ParameterPlatform: TableMapType = { +// MA_MARKRULE: MA_MARKRULE, +// MA_SYSTEMPARM: MA_SYSTEMPARM, +// MA_MAP_COLLECT: MA_MAP_COLLECT, +// MA_MAP_COLLECT_SHAPE: MA_MAP_COLLECT_SHAPE, +// MA_MAP_ITEMCLASS: MA_MAP_ITEMCLASS, +// MA_MAP_POINT: MA_MAP_POINT, +// MA_MAP_POINT_ITEM: MA_MAP_POINT_ITEM, +// MA_MAP_ROAD: MA_MAP_ROAD, +// MA_MAP_ROAD_LANE: MA_MAP_ROAD_LANE, +// MAP_SUBITEM: MA_MAP_SUBITEM, +// MA_MAP_SUBITEM: MA_MAP_SUBITEM, +// MA_SYSSET: MA_SYSSET, +// ES_CARINFO: ES_CARINFO, +// ES_EXAMPOINTDETAIL: ES_EXAMPOINTDETAIL, +// MA_MARKRULESET: MA_MARKRULESET, +// MA_CDSBINFO: MA_CDSBINFO, +// MA_ITEMINFO: MA_ITEMINFO, +// MA_T_CARPARMSET: MA_T_CARPARMSET, +// ES_CAR_VIDEO_PARAMETER: ES_CAR_VIDEO_PARAMETER, +// USER: USER, +// USERLIST: USERLIST, +// IpConfigTable: IpConfigTable, +// DeviceInfoTable: DeviceInfoTable, +// CommonConstants: accountTable +// } +export const ParameterPlatform = new Map([ + ['MA_MARKRULE', MA_MARKRULE], + ['MA_SYSTEMPARM', MA_SYSTEMPARM], + ['MA_MAP_COLLECT', MA_MAP_COLLECT], + ['MA_MAP_COLLECT_SHAPE', MA_MAP_COLLECT_SHAPE], + ['MA_MAP_ITEMCLASS', MA_MAP_ITEMCLASS], + ['MA_MAP_POINT', MA_MAP_POINT], + ['MA_MAP_POINT_ITEM', MA_MAP_POINT_ITEM], + ['MA_MAP_ROAD', MA_MAP_ROAD], + ['MA_MAP_ROAD_LANE', MA_MAP_ROAD_LANE], + ['MAP_SUBITEM', MA_MAP_SUBITEM], + ['MA_MAP_SUBITEM', MA_MAP_SUBITEM], + ['MA_SYSSET', MA_SYSSET], + ['ES_CARINFO', ES_CARINFO], + ['ES_EXAMPOINTDETAIL', ES_EXAMPOINTDETAIL], + ['MA_MARKRULESET', MA_MARKRULESET], + ['MA_CDSBINFO', MA_CDSBINFO], + ['MA_ITEMINFO', MA_ITEMINFO], + ['MA_T_CARPARMSET', MA_T_CARPARMSET], + ['ES_CAR_VIDEO_PARAMETER', ES_CAR_VIDEO_PARAMETER], + ['USER', USER], + ['USERLIST', USERLIST], + ['IpConfigTable', IpConfigTable], + ['DeviceInfoTable', DeviceInfoTable], + ['CommonConstants', accountTable] +]); -export const CenterMap: CenterTableMapType = { - ItemInfo: MA_ITEMINFO, - MarkRule: MA_MARKRULE, - SystemParm: MA_SYSTEMPARM, - mapCollectList: MA_MAP_COLLECT, - mapCollectshapeList: MA_MAP_COLLECT_SHAPE, - Map_Collect: MA_MAP_COLLECT, - Map_Collect_Shape: MA_MAP_COLLECT_SHAPE, - Map_ItemClass: MA_MAP_ITEMCLASS, - Map_Point: MA_MAP_POINT, - Map_Point_Item: MA_MAP_POINT_ITEM, - Map_Road: MA_MAP_ROAD, - Map_Road_Lane: MA_MAP_ROAD_LANE, - Map_SubItem: MA_MAP_SUBITEM, - Sysset: MA_SYSSET, - CarInfo: ES_CARINFO, - MarkRuleSet: MA_MARKRULE, - Cdsbinfo: MA_CDSBINFO, - T_CarParmSet: MA_T_CARPARMSET, -} \ No newline at end of file +// export const CenterMap: CenterTableMapType = { +// ItemInfo: MA_ITEMINFO, +// MarkRule: MA_MARKRULE, +// SystemParm: MA_SYSTEMPARM, +// mapCollectList: MA_MAP_COLLECT, +// mapCollectshapeList: MA_MAP_COLLECT_SHAPE, +// Map_Collect: MA_MAP_COLLECT, +// Map_Collect_Shape: MA_MAP_COLLECT_SHAPE, +// Map_ItemClass: MA_MAP_ITEMCLASS, +// Map_Point: MA_MAP_POINT, +// Map_Point_Item: MA_MAP_POINT_ITEM, +// Map_Road: MA_MAP_ROAD, +// Map_Road_Lane: MA_MAP_ROAD_LANE, +// Map_SubItem: MA_MAP_SUBITEM, +// Sysset: MA_SYSSET, +// CarInfo: ES_CARINFO, +// MarkRuleSet: MA_MARKRULE, +// Cdsbinfo: MA_CDSBINFO, +// T_CarParmSet: MA_T_CARPARMSET, +// } +export const CenterMap = new Map([ + ['ItemInfo', MA_ITEMINFO], + ['MarkRule', MA_MARKRULE], + ['SystemParm', MA_SYSTEMPARM], + ['mapCollectList', MA_MAP_COLLECT], + ['mapCollectshapeList', MA_MAP_COLLECT_SHAPE], + ['Map_Collect', MA_MAP_COLLECT], + ['Map_Collect_Shape', MA_MAP_COLLECT_SHAPE], + ['Map_ItemClass', MA_MAP_ITEMCLASS], + ['Map_Point', MA_MAP_POINT], + ['Map_Point_Item', MA_MAP_POINT_ITEM], + ['Map_Road', MA_MAP_ROAD], + ['Map_Road_Lane', MA_MAP_ROAD_LANE], + ['Map_SubItem', MA_MAP_SUBITEM], + ['Sysset', MA_SYSSET], + ['CarInfo', ES_CARINFO], + ['MarkRuleSet', MA_MARKRULE], + ['Cdsbinfo', MA_CDSBINFO], + ['T_CarParmSet', MA_T_CARPARMSET], +]); \ No newline at end of file