|
@@ -0,0 +1,145 @@
|
|
|
+import relationalStore from '@ohos.data.relationalStore';
|
|
|
+import CommonConstants from '../Common/constants/CommonConstants';
|
|
|
+import { StorageLog } from '../viewmodel/wms/StorageLog';
|
|
|
+
|
|
|
+class StorageLogModel {
|
|
|
+
|
|
|
+ private rdbStore: relationalStore.RdbStore |undefined=undefined
|
|
|
+ private tableName: string = 'StorageLog'
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化表
|
|
|
+ */
|
|
|
+ async initTaskDB(context:Context){
|
|
|
+ // 1.rdb配置
|
|
|
+ const config = {
|
|
|
+ name: CommonConstants.RDB_NAME,
|
|
|
+ securityLevel: relationalStore.SecurityLevel.S1
|
|
|
+ }as relationalStore.StoreConfig
|
|
|
+ try {
|
|
|
+ // 获取数据库存储对象
|
|
|
+ this.rdbStore = await relationalStore.getRdbStore(context,config);
|
|
|
+ } catch (err) {
|
|
|
+ console.info(`getRdbStore err ${JSON.stringify(err)}`);
|
|
|
+ }
|
|
|
+ // 2.初始化SQL语句
|
|
|
+ const sql = `CREATE TABLE IF NOT EXISTS ` + this.tableName + `(
|
|
|
+ ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
|
+ LOG_DATA VARCHAR NOT NULL,
|
|
|
+ LOG_TYPE INTEGER NOT NULL,
|
|
|
+ DATE VARCHAR NOT NULL
|
|
|
+ )`
|
|
|
+ // 3.获取rdb
|
|
|
+ relationalStore.getRdbStore(context, config, (err, rdbStore) => {
|
|
|
+ if(err){
|
|
|
+ console.log('testTag', '获取rdbStore失败!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 执行Sql
|
|
|
+ rdbStore.executeSql(sql).then(()=>{
|
|
|
+ console.log('testTag', '创建仓储日志表成功!')
|
|
|
+ }).catch((err: object)=>{
|
|
|
+ console.log('testTag', '创建失败')
|
|
|
+ })
|
|
|
+ // 保存rdbStore
|
|
|
+ this.rdbStore = rdbStore
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询仓储日志
|
|
|
+ * @param user 仓储日志
|
|
|
+ * @returns 仓储日志id
|
|
|
+ */
|
|
|
+ async getStorageLogList(): Promise<StorageLog[]> {
|
|
|
+ // 1.构建查询条件
|
|
|
+ let predicates = new relationalStore.RdbPredicates(this.tableName)
|
|
|
+ // 2.查询
|
|
|
+ let result: relationalStore.ResultSet | undefined = await this.rdbStore?.query(predicates, ['*'])
|
|
|
+ // 3.解析查询结果
|
|
|
+ // 3.1.定义一个数组,组装最终的查询结果
|
|
|
+ let presets: StorageLog[] = []
|
|
|
+ // 3.2.遍历封装
|
|
|
+ while(result && !result?.isAtLastRow){
|
|
|
+ // 3.3.指针移动到下一行
|
|
|
+ result.goToNextRow()
|
|
|
+ // 3.4.获取数据
|
|
|
+ let id = result.getLong(result.getColumnIndex('ID'))
|
|
|
+ let logData = result.getString(result.getColumnIndex('LOG_DATA'))
|
|
|
+ let logType = result.getLong(result.getColumnIndex('LOG_TYPE'))
|
|
|
+ let date = result.getString(result.getColumnIndex('DATE'))
|
|
|
+ // 3.5.封装到数组
|
|
|
+ presets.push({id, logData, logType, date})
|
|
|
+ }
|
|
|
+ return presets
|
|
|
+ }
|
|
|
+
|
|
|
+ // 分页函数封装
|
|
|
+ async findStorageLogPage(page: number, size: number): Promise<StorageLog[]> {
|
|
|
+ const offset = (page - 1) * size;
|
|
|
+ // 1.构建查询条件
|
|
|
+ let predicates = new relationalStore.RdbPredicates(this.tableName).limitAs(size).offsetAs(offset)
|
|
|
+ let result: relationalStore.ResultSet | undefined = await this.rdbStore?.query(predicates, ["*"]);
|
|
|
+ // 3.解析查询结果
|
|
|
+ // 3.1.定义一个数组,组装最终的查询结果
|
|
|
+ let presets: StorageLog[] = []
|
|
|
+ // 3.2.遍历封装
|
|
|
+ while(result && !result?.isAtLastRow){
|
|
|
+ // 3.3.指针移动到下一行
|
|
|
+ result.goToNextRow()
|
|
|
+ // 3.4.获取数据
|
|
|
+ let id = result.getLong(result.getColumnIndex('ID'))
|
|
|
+ let logData = result.getString(result.getColumnIndex('LOG_DATA'))
|
|
|
+ let logType = result.getLong(result.getColumnIndex('LOG_TYPE'))
|
|
|
+ let date = result.getString(result.getColumnIndex('DATE'))
|
|
|
+ // 3.5.封装到数组
|
|
|
+ presets.push({id, logData, logType, date})
|
|
|
+ }
|
|
|
+ return presets
|
|
|
+}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加用户设置
|
|
|
+ * @param user 仓储日志
|
|
|
+ * @returns 仓储日志id
|
|
|
+ */
|
|
|
+ addStorageLog(log: StorageLog): Promise<number> | undefined {
|
|
|
+ return this.rdbStore?.insert(this.tableName, {LOG_DATA: log.logData, LOG_TYPE: log.logType, DATE: log.date} as relationalStore.ValuesBucket)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据id更新用户设置状态
|
|
|
+ * @param id 任务id
|
|
|
+ * @param finished 任务是否完成
|
|
|
+ */
|
|
|
+ updateStorageLog(log: StorageLog) {
|
|
|
+ // 1.要更新的数据
|
|
|
+ let data: relationalStore.ValuesBucket = {LOG_DATA: log.logData, LOG_TYPE: log.logType, DATE: log.date}
|
|
|
+ // 2.更新的条件
|
|
|
+ if (log && log.id!) {
|
|
|
+ let predicates = new relationalStore.RdbPredicates(this.tableName)
|
|
|
+ predicates.equalTo('ID', log.id!)
|
|
|
+ // 3.更新操作
|
|
|
+ return this.rdbStore?.update(data, predicates)
|
|
|
+ }
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据id删除任务
|
|
|
+ * @param id 任务id
|
|
|
+ */
|
|
|
+ deleteById(id: number){
|
|
|
+ // 1.删除的条件
|
|
|
+ let predicates = new relationalStore.RdbPredicates(this.tableName)
|
|
|
+ predicates.equalTo('ID', id)
|
|
|
+ // 2.删除操作
|
|
|
+ return this.rdbStore?.delete(predicates)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+let storageLogModel = new StorageLogModel();
|
|
|
+
|
|
|
+export default storageLogModel as StorageLogModel;
|
|
|
+
|
|
|
+
|