• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import dataRdb from '@ohos.data.rdb'
17import { GPData,TIndexInfo,TGeneralInfo,TPowerSensorInfo,TPowerAppInfo } from '../entity/DatabaseEntity';
18import { sql_t_index_info, dbVersion, dbName,task_powersensor_info,task_powerapp_info } from '../constant/ConstantSQL'
19import SPLogger from '../utils/SPLogger'
20
21const TAG = "DatabaseUtils"
22
23export default {
24
25    //创建表(T_INDEX_INFO T_GENERAL_INFO)
26    async createTable(pathSuffix: number): Promise<void> {
27        const STORE_CONFIG_Index = {
28            name: pathSuffix + ".db"
29        }
30           dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG_Index, dbVersion)
31               .then(rdbStore => {
32                   rdbStore.executeSql(sql_t_index_info, null).catch(err => {
33
34                   })
35                   rdbStore.executeSql(task_powersensor_info, null).catch(err => {
36
37                   })
38                   rdbStore.executeSql(task_powerapp_info, null).catch(err => {
39
40                   })
41
42                   return rdbStore
43               })
44
45    },
46
47    //插入表( T_GENERAL_INFO)
48    insertGeneraData(tableName: string, tGeneralInfo: TGeneralInfo) {
49        var strMap = new Map;
50        for (let k of Object.keys(tGeneralInfo)) {
51            strMap.set(k, tGeneralInfo[k])
52        }
53        const valueInsert = {
54            "sessionId": strMap.get("sessionId"),
55            "taskId": strMap.get("taskId"),
56            "appName": strMap.get("appName"),
57            "appVersion": strMap.get("appVersion"),
58            "packageName": strMap.get("packageName"),
59            "startTime": strMap.get("startTime"),
60            "endTime": strMap.get("endTime"),
61            "testDuration": strMap.get("testDuration"),
62            "taskName": strMap.get("taskName")
63            //      "testCase":strMap.get("testCase"),
64            //      "testType":strMap.get("testType"),
65            //      "user":strMap.get("user"),
66            //      "userId":strMap.get("userId"),
67            //      "projectId":strMap.get("projectId"),
68            //      "dataSource":strMap.get("dataSource"),
69            //      "spVersion":strMap.get("spVersion"),
70            //      "deviceTypeName":strMap.get("deviceTypeName"),
71            //      "brand":strMap.get("brand"),
72            //      "deviceName":strMap.get("deviceName"),
73            //      "board":strMap.get("board"),
74            //      "version":strMap.get("version"),
75            //      "plat":strMap.get("plat"),
76            //      "cpuCluster":strMap.get("cpuCluster"),
77            //      "sn":strMap.get("sn"),
78            //      "resolution":strMap.get("resolution"),
79            //      "screenBrightness":strMap.get("screenBrightness"),
80            //      "volume":strMap.get("volume"),
81            //      "batteryVolume":strMap.get("batteryVolume")
82        }
83        const STORE_CONFIG = {
84            name: dbName
85        }
86        dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, dbVersion, (err, rdbStore) => {
87//            SPLogger.DEBUG(TAG,"--> insert into  insertGeneraData :tableName:" + tableName + "| valueInsert:" + JSON.stringify(valueInsert))
88            rdbStore.insert(tableName, valueInsert).catch(err => {
89//                SPLogger.DEBUG(TAG,"--> insert into  insertGeneraData err:" + err)
90            }).then(() => {
91//                SPLogger.DEBUG(TAG,"--> insert into  insertGeneraData success:")
92            })
93        })
94    },
95
96    //插入表(T_INDEX_INFO)
97    insertData(tableName: string, pathSuffix: number, tIndexInfo: TIndexInfo) {
98
99        var strMap = new Map;
100        for (let k of Object.keys(tIndexInfo)) {
101            strMap.set(k, tIndexInfo[k]);
102
103        }
104
105        const valueInsert = {
106            "timestamp": strMap.get("timestamp"),
107            "taskId": strMap.get("taskId"),
108            "ddrFrequency": strMap.get("ddrFrequency"),
109            "cpu0Frequency": strMap.get("cpu0Frequency"),
110            "cpu1Frequency": strMap.get("cpu1Frequency"),
111            "cpu2Frequency": strMap.get("cpu2Frequency"),
112            "cpu3Frequency": strMap.get("cpu3Frequency"),
113            "cpu4Frequency": strMap.get("cpu4Frequency"),
114            "cpu5Frequency": strMap.get("cpu5Frequency"),
115            "cpu6Frequency": strMap.get("cpu6Frequency"),
116            "cpu7Frequency": strMap.get("cpu7Frequency"),
117            "cpu0Load": strMap.get("cpu0Load"),
118            "cpu1Load": strMap.get("cpu1Load"),
119            "cpu2Load": strMap.get("cpu2Load"),
120            "cpu3Load": strMap.get("cpu3Load"),
121            "cpu4Load": strMap.get("cpu4Load"),
122            "cpu5Load": strMap.get("cpu5Load"),
123            "cpu6Load": strMap.get("cpu6Load"),
124            "cpu7Load": strMap.get("cpu7Load"),
125            "gpuFrequency": strMap.get("gpuFrequency"),
126            "gpuLoad": strMap.get("gpuLoad"),
127            "currentNow": strMap.get("currentNow"),
128            "voltageNow": strMap.get("voltageNow"),
129            "shellFrameTemp": strMap.get("shellFrameTemp"),
130            "shellFrontTemp": strMap.get("shellFrontTemp"),
131            "shellBackTemp": strMap.get("shellBackTemp"),
132            "socThermalTemp": strMap.get("socThermalTemp"),
133            "systemHTemp": strMap.get("systemHTemp"),
134            "gpuTemp": strMap.get("gpuTemp"),
135            "ambientTemp": strMap.get("ambientTemp"),
136            "batteryTemp": strMap.get("batteryTemp"),
137            "pss": strMap.get("pss"),
138            "fps": strMap.get("fps"),
139            "fpsJitters": strMap.get("fpsJitters"),
140            "networkUpSpeed": strMap.get("networkUpSpeed"),
141            "networkDownSpeed": strMap.get("networkDownSpeed")
142        }
143        const STORE_CONFIG = {
144            name: pathSuffix + ".db"
145        }
146        dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, dbVersion, (err, rdbStore) => {
147            rdbStore.insert(tableName, valueInsert)
148        })
149    },
150
151    //查询表( T_GENERAL_INFO)
152    async queryGeneralData(): Promise<Array<TGeneralInfo>> {
153        const STORE_CONFIG = {
154            name: dbName
155        }
156        let results = Array<TGeneralInfo>()
157        try {
158            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
159                .then(rdbStore => {
160                    let predicates = new dataRdb.RdbPredicates('t_general_info')
161                    predicates.orderByDesc("startTime")
162                    return rdbStore.query(predicates, ["sessionId",
163                    "startTime", "taskId", "appName", "appVersion", "packageName", "endTime", "testDuration", "taskName"
164                    ])
165                })
166                .then(resultSet => {
167                    while (resultSet.goToNextRow()) {
168                        let sessionId = resultSet.getString(resultSet.getColumnIndex("sessionId"))
169                        let taskId = resultSet.getString(resultSet.getColumnIndex("taskId"))
170                        let appName = resultSet.getString(resultSet.getColumnIndex("appName"))
171                        let appVersion = resultSet.getString(resultSet.getColumnIndex("appVersion"))
172                        let packageName = resultSet.getString(resultSet.getColumnIndex("packageName"))
173                        let startTime = resultSet.getString(resultSet.getColumnIndex("startTime"))
174                        let endTime = resultSet.getString(resultSet.getColumnIndex("endTime"))
175                        let testDuration = resultSet.getLong(resultSet.getColumnIndex("testDuration"))
176                        let taskName = resultSet.getString(resultSet.getColumnIndex("taskName"))
177                        let board = resultSet.getString(resultSet.getColumnIndex("board"))
178                        let deviceTypeName = resultSet.getString(resultSet.getColumnIndex("deviceTypeName"))
179                        let brand = resultSet.getString(resultSet.getColumnIndex("brand"))
180                        let version = resultSet.getString(resultSet.getColumnIndex("version"))
181                        let sn = resultSet.getString(resultSet.getColumnIndex("sn"))
182
183                        let tGeneralInfo = new TGeneralInfo(
184                            sessionId, taskId, appName, appVersion, packageName, Number(startTime).valueOf(), Number(endTime).valueOf(), testDuration, taskName
185                        )
186                        tGeneralInfo.board = board
187                        tGeneralInfo.deviceTypeName = deviceTypeName
188                        tGeneralInfo.brand = brand
189                        tGeneralInfo.version = version
190                        tGeneralInfo.sn = sn
191                        results.push(tGeneralInfo)
192                    }
193                    return results
194                })
195
196        } catch (err) {
197            SPLogger.ERROR(TAG,"resultSet queryGeneralData:err" + err)
198        }
199    },
200
201    //查询表( T_INDEX_INFO) 2022-02-23 改为传时间戳
202    async queryData(dbPath: string): Promise<Array<TIndexInfo>> {
203        const STORE_CONFIG = {
204            name: dbPath
205        }
206        let results = Array<TIndexInfo>()
207        try {
208            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
209                .then(rdbStore => {
210                    let predicates = new dataRdb.RdbPredicates('t_index_info')
211                    predicates.orderByDesc("timestamp")
212                    return rdbStore.query(predicates, [
213                        "timestamp",
214                        "taskId",
215                        "shellBackTemp", "shellFrameTemp", "shellFrontTemp", "socThermalTemp", "systemHTemp", "gpuTemp", "ambientTemp", "batteryTemp",
216                        "ddrFrequency",
217                        "cpu0Frequency", "cpu1Frequency", "cpu2Frequency", "cpu3Frequency", "cpu4Frequency", "cpu5Frequency", "cpu6Frequency", "cpu7Frequency",
218                        "cpu0Load", "cpu1Load", "cpu2Load", "cpu3Load", "cpu4Load", "cpu5Load", "cpu6Load", "cpu7Load",
219                        "gpuLoad", "gpuFrequency",
220                        "currentNow", "voltageNow",
221                        "pss",
222                        "fps", "fpsJitters",
223                        "networkUpSpeed","networkDownSpeed"
224                    ])
225                })
226                .then(resultSet => {
227                    while (resultSet.goToNextRow()) {
228                        let timestamp = resultSet.getString(resultSet.getColumnIndex("timestamp"))
229                        let shellBackTemp = resultSet.getString(resultSet.getColumnIndex("shellBackTemp"))
230                        let shellFrameTemp = resultSet.getString(resultSet.getColumnIndex("shellFrameTemp"))
231                        let shellFrontTemp = resultSet.getString(resultSet.getColumnIndex("shellFrontTemp"))
232                        let socThermalTemp = resultSet.getString(resultSet.getColumnIndex("socThermalTemp"))
233                        let systemHTemp = resultSet.getString(resultSet.getColumnIndex("systemHTemp"))
234                        let gpuTemp = resultSet.getString(resultSet.getColumnIndex("gpuTemp"))
235                        let ambientTemp = resultSet.getString(resultSet.getColumnIndex("ambientTemp"))
236                        let batteryTemp = resultSet.getString(resultSet.getColumnIndex("batteryTemp"))
237                        let ddrFrequency = resultSet.getString(resultSet.getColumnIndex("ddrFrequency"))
238                        let cpu0Frequency = resultSet.getString(resultSet.getColumnIndex("cpu0Frequency"))
239                        let cpu1Frequency = resultSet.getString(resultSet.getColumnIndex("cpu1Frequency"))
240                        let cpu2Frequency = resultSet.getString(resultSet.getColumnIndex("cpu2Frequency"))
241                        let cpu3Frequency = resultSet.getString(resultSet.getColumnIndex("cpu3Frequency"))
242                        let cpu4Frequency = resultSet.getString(resultSet.getColumnIndex("cpu4Frequency"))
243                        let cpu5Frequency = resultSet.getString(resultSet.getColumnIndex("cpu5Frequency"))
244                        let cpu6Frequency = resultSet.getString(resultSet.getColumnIndex("cpu6Frequency"))
245                        let cpu7Frequency = resultSet.getString(resultSet.getColumnIndex("cpu7Frequency"))
246
247                        let cpu0Load = resultSet.getString(resultSet.getColumnIndex("cpu0Load"))
248                        let cpu1Load = resultSet.getString(resultSet.getColumnIndex("cpu1Load"))
249                        let cpu2Load = resultSet.getString(resultSet.getColumnIndex("cpu2Load"))
250                        let cpu3Load = resultSet.getString(resultSet.getColumnIndex("cpu3Load"))
251                        let cpu4Load = resultSet.getString(resultSet.getColumnIndex("cpu4Load"))
252                        let cpu5Load = resultSet.getString(resultSet.getColumnIndex("cpu5Load"))
253                        let cpu6Load = resultSet.getString(resultSet.getColumnIndex("cpu6Load"))
254                        let cpu7Load = resultSet.getString(resultSet.getColumnIndex("cpu7Load"))
255
256                        let gpuLoad = resultSet.getString(resultSet.getColumnIndex("gpuLoad"))
257                        let gpuFrequency = resultSet.getString(resultSet.getColumnIndex("gpuFrequency"))
258                        let currentNow = resultSet.getString(resultSet.getColumnIndex("currentNow"))
259                        let voltageNow = resultSet.getString(resultSet.getColumnIndex("voltageNow"))
260
261                        let pss = resultSet.getString(resultSet.getColumnIndex("pss"))
262                        let fps = resultSet.getString(resultSet.getColumnIndex("fps"))
263                        let fpsJitters = resultSet.getString(resultSet.getColumnIndex("fpsJitters"))
264
265                        let networkUpSpeed = resultSet.getString(resultSet.getColumnIndex("networkUpSpeed"))
266                        let networkDownSpeed = resultSet.getString(resultSet.getColumnIndex("networkDownSpeed"))
267
268                        results.push(new TIndexInfo(
269                            timestamp,
270                            "18",
271                            cpu0Frequency, cpu1Frequency, cpu2Frequency, cpu3Frequency, cpu4Frequency, cpu5Frequency, cpu6Frequency, cpu7Frequency,
272                            cpu0Load, cpu1Load, cpu2Load, cpu3Load, cpu4Load, cpu5Load, cpu6Load, cpu7Load,
273                            gpuFrequency, gpuLoad,
274                            ddrFrequency,
275                            shellFrameTemp, shellFrontTemp, shellBackTemp, socThermalTemp, systemHTemp, gpuTemp, ambientTemp, batteryTemp,
276                            currentNow, voltageNow,
277                            pss,
278                            fps,fpsJitters,
279                            networkUpSpeed,networkDownSpeed
280                        ))
281                        console.log("resultSet column names:results:index:" + resultSet.rowIndex)
282                    }
283                    console.log("resultSet column names:results length:" + results.length)
284                    console.log("resultSet column names:results:" + JSON.stringify(results))
285                    return results
286                })
287        } catch (err) {
288            SPLogger.ERROR(TAG,"resultSet queryIndexInfo Data:err" + err)
289        }
290    },
291    /**
292     * Array<GPData> 封装为TIndexInfo
293     * @param gpDatas
294     */
295    gpArray2Index(gpDatas: Array<GPData>): TIndexInfo{
296
297        var tIndexInfo: TIndexInfo = new TIndexInfo()
298        tIndexInfo.setTaskId("18")
299        tIndexInfo.setTimeStamp(new Date().getTime().toString())
300        if (gpDatas != null) {
301            for (var index = 0; index < gpDatas.length; index++) {
302                let curGPData: GPData = gpDatas[index]
303                let map = curGPData.values
304
305                switch (curGPData.moduleType) {
306                    case "CPU":
307                        tIndexInfo.setCPUData(
308                        map.get("cpu0Freq"),
309                        map.get("cpu1Freq"),
310                        map.get("cpu2Freq"),
311                        map.get("cpu3Freq"),
312                        map.get("cpu4Freq"),
313                        map.get("cpu5Freq"),
314                        map.get("cpu6Freq"),
315                        map.get("cpu7Freq")
316                        )
317                        break;
318                    case "CPULoad":
319                        tIndexInfo.setCPULoadData(
320                        map.get("cpu0Load"),
321                        map.get("cpu1Load"),
322                        map.get("cpu2Load"),
323                        map.get("cpu3Load"),
324                        map.get("cpu4Load"),
325                        map.get("cpu5Load"),
326                        map.get("cpu6Load"),
327                        map.get("cpu7Load")
328                        )
329                        break;
330                    case "GPU":
331                        tIndexInfo.setGPUData(
332                        map.get("gpuFreq"),
333                        map.get("gpuLoad")
334                        )
335                        break;
336                    case "DDR":
337                        tIndexInfo.setDDRData(
338                        map.get("ddrFreq")
339                        )
340                        break;
341                    case "Temp":
342                        tIndexInfo.setTempData(
343                        map.get("shell_frame"),
344                        map.get("shell_front"),
345                        map.get("shell_back"),
346                        map.get("soc-thermal"),
347                        map.get("system_h"),
348                        map.get("gpu-thermal"),
349                        map.get("ambient")
350
351                        )
352                        break;
353                    case "Power":
354                        tIndexInfo.setPowerData(
355                        map.get("current_now"),
356                        map.get("voltage_now"),
357                        map.get("temp")
358                        )
359                        break;
360                    case "RAM":
361                        tIndexInfo.setRamData(
362                        map.get("pss")
363                        )
364                        break;
365                    case "FPS":
366                        tIndexInfo.setFpsData(
367                        map.get("fps"), map.get("fpsJitters"))
368                        break;
369                    case "NetWork":
370                        tIndexInfo.setNetWorkData(
371                        map.get("netSpeedUp"), map.get("netSpeedDown"))
372                        break;
373                }
374            }
375        }
376
377        return tIndexInfo
378    },
379
380    //插入表(task_powersensor_info)
381     insertPowerSensor(tableName: string, pathSuffix: number, tPowerSenspor: TPowerSensorInfo) {
382        SPLogger.INFO("TAG","resultSet query_applications_display-----tPowerSenspor" + JSON.stringify(tPowerSenspor))
383        var strMap = new Map;
384        for (let k of Object.keys(tPowerSenspor)) {
385            strMap.set(k, tPowerSenspor[k]);
386        }
387        const valueInsert = {
388            "timestamp": strMap.get("timestamp"),
389            "taskId": strMap.get("taskId"),
390            "sensor": strMap.get("sensor"),
391            "power": strMap.get("power"),
392            "current": strMap.get("current"),
393            "percent": strMap.get("percent"),
394        }
395        const STORE_CONFIG = {
396            name: pathSuffix + ".db"
397        }
398        dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, dbVersion, (err, rdbStore) => {
399            SPLogger.INFO("TAG","resultSet query_applications_display-----tPowerSenspor" + JSON.stringify(pathSuffix))
400            rdbStore.insert(tableName, valueInsert)
401        })
402    },
403
404    //插入表(task_powerapp_info)
405    insertPowerAppInfo(tableName: string, pathSuffix: number, tPowerApp: TPowerAppInfo) {
406        SPLogger.INFO("TAG","resultSet query_applications_display-----tPowerApp" + JSON.stringify(tPowerApp))
407        var strMap = new Map;
408        for (let k of Object.keys(tPowerApp)) {
409            strMap.set(k, tPowerApp[k]);
410        }
411        const valueInsert = {
412            "taskId": "",
413            "process": strMap.get("application"),
414            "energy": strMap.get("power"),
415            "percent": strMap.get("percent"),
416        }
417        const STORE_CONFIG = {
418            name: pathSuffix + ".db"
419        }
420        dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, dbVersion, (err, rdbStore) => {
421            SPLogger.INFO("TAG","resultSet query_applications_display-----tPowerApp" + JSON.stringify(pathSuffix))
422            rdbStore.insert(tableName, valueInsert)
423        })
424    },
425
426    //查询表(detailed_applications_display)
427    async query_applications_display(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
428        const STORE_CONFIG = {
429            name: "dubai.db"
430        }
431        let results = Array<TPowerSensorInfo>()
432        try {
433            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
434                .then(async(rdbStore) => {
435                    let strSQL: string = "select sum(energy)/3600.0 power,sum(energy)/((max(end_time)-min(start_time))/1000.0) current " +
436                    "from detailed_applications_display " +
437                    "where formatted_start_time >= " +
438                    JSON.stringify(start_time) +
439                    " and formatted_end_time <= " +
440                    JSON.stringify(end_time) +
441                    " and name = "+
442                    JSON.stringify(pkg_name)
443                    SPLogger.INFO("TAG","resultSet query_applications_display-----display" + JSON.stringify(strSQL))
444                    return rdbStore.querySql(strSQL)
445                })
446                .then(resultSet => {
447
448                    while (resultSet.goToNextRow()) {
449                        let sensor = "display"
450                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
451                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
452                        let tPowerSensorInfo = new TPowerSensorInfo( "", sensor, power, current,"")
453                        results.push(tPowerSensorInfo)
454                    }
455                    SPLogger.INFO("TAG","resultSet query_applications_display-----display" + JSON.stringify(results))
456                    return results
457                })
458        } catch (err) {
459            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
460
461        }
462    },
463    //查询表(task_powersensor_info)
464    async query_powersensor_info(pathSuffix: number): Promise<Array<TPowerSensorInfo>> {
465        const STORE_CONFIG = {
466            name: pathSuffix+".db"
467        }
468        let results = Array<TPowerSensorInfo>()
469        try {
470            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
471                .then(async(rdbStore) => {
472                         let strSQL: string = "select * " +
473                        "from task_powersensor_info order by power desc  "
474
475                    return rdbStore.querySql(strSQL)
476                })
477                .then(resultSet => {
478                    while (resultSet.goToNextRow()) {
479                        let sensor =resultSet.getString(resultSet.getColumnIndex("sensor"))
480                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
481                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
482                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
483                        results.push(tPowerSensorInfo)
484                    }
485                    return results
486                })
487        } catch (err) {
488            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
489
490        }
491    },
492    //查询表(detailed_applications_cpu)
493    async query_applications_cpu(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
494        const STORE_CONFIG = {
495            name: "dubai.db"
496        }
497        let results = Array<TPowerSensorInfo>()
498        try {
499            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
500                .then(async(rdbStore) => {
501                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
502                    "from detailed_applications_cpu " +
503                    "where formatted_start_time >= " +
504                    JSON.stringify(start_time) +
505                    " and formatted_end_time <= " +
506                    JSON.stringify(end_time) +
507                    " and name = "+
508                    JSON.stringify(pkg_name)
509
510                    return rdbStore.querySql(strSQL)
511                })
512                .then(resultSet => {
513                    while (resultSet.goToNextRow()) {
514                        let sensor = "cpu"
515                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
516                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
517                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
518                        results.push(tPowerSensorInfo)
519                    }
520                    SPLogger.INFO("TAG","resultSet query_applications_display-----cpu" + JSON.stringify(results))
521                    return results
522                })
523        } catch (err) {
524            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
525
526        }
527    },
528    //查询表(detailed_applications_gpu)
529    async query_applications_gpu(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
530        const STORE_CONFIG = {
531            name: "dubai.db"
532        }
533        let results = Array<TPowerSensorInfo>()
534        try {
535            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
536                .then(async(rdbStore) => {
537                    let strSQL: string = "select sum(energy)/3600.0 power,sum(energy)/((max(end_time)-min(start_time))/1000.0) current " +
538                    "from detailed_applications_gpu " +
539                    "where formatted_start_time >= " +
540                    JSON.stringify(start_time) +
541                    " and formatted_end_time <= " +
542                    JSON.stringify(end_time) +
543                    " and name = "+
544                    JSON.stringify(pkg_name)
545
546                    return rdbStore.querySql(strSQL)
547                })
548                .then(resultSet => {
549
550                    while (resultSet.goToNextRow()) {
551                        let sensor = "gpu"
552                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
553                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
554                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
555                        results.push(tPowerSensorInfo)
556                    }
557                    SPLogger.INFO("TAG","resultSet query_applications_display-----gpu" + JSON.stringify(results))
558                    return results
559                })
560        } catch (err) {
561            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
562
563        }
564    },
565    //查询表(detailed_applications_wifi_data)
566    async query_applications_wifi_data(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
567        const STORE_CONFIG = {
568            name: "dubai.db"
569        }
570        let results = Array<TPowerSensorInfo>()
571        try {
572            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
573                .then(async(rdbStore) => {
574                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
575                    "from detailed_applications_wifi_data " +
576                    "where formatted_start_time >= " +
577                    JSON.stringify(start_time) +
578                    " and formatted_end_time <= " +
579                    JSON.stringify(end_time) +
580                    " and name = "+
581                    JSON.stringify(pkg_name)
582                    return rdbStore.querySql(strSQL)
583                })
584                .then(resultSet => {
585                    while (resultSet.goToNextRow()) {
586                        let sensor = "wifi_data"
587                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
588                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
589                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
590                        results.push(tPowerSensorInfo)
591                    }
592                    SPLogger.INFO("TAG","resultSet query_applications_display-----wifi_data" + JSON.stringify(results))
593                    return results
594                })
595        } catch (err) {
596            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
597
598        }
599    },
600    //查询表(detailed_applications_system_idle)
601    async query_applications_system_idle(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
602        const STORE_CONFIG = {
603            name: "dubai.db"
604        }
605        let results = Array<TPowerSensorInfo>()
606        try {
607            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
608                .then(async(rdbStore) => {
609                    let strSQL: string = "select sum(energy)/3600.0 power,sum(energy)/((max(end_time)-min(start_time))/1000.0) current " +
610                    "from detailed_applications_system_idle " +
611                    "where formatted_start_time >= " +
612                    JSON.stringify(start_time) +
613                    " and formatted_end_time <= " +
614                    JSON.stringify(end_time) +
615                    " and name = "+
616                    JSON.stringify(pkg_name)
617                    return rdbStore.querySql(strSQL)
618                })
619                .then(resultSet => {
620                    while (resultSet.goToNextRow()) {
621                        let sensor = "system_idle"
622                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
623                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
624                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
625                        results.push(tPowerSensorInfo)
626                    }
627                    SPLogger.INFO("TAG","resultSet query_applications_display-----system_idle" + JSON.stringify(results))
628                    return results
629                })
630        } catch (err) {
631            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
632
633        }
634    },
635    //查询表(detailed_applications_audio)
636    async query_applications_audio(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
637        const STORE_CONFIG = {
638            name: "dubai.db"
639        }
640        let results = Array<TPowerSensorInfo>()
641        try {
642            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
643                .then(async(rdbStore) => {
644                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
645                    "from detailed_applications_audio " +
646                    "where formatted_start_time >= " +
647                    JSON.stringify(start_time) +
648                    " and formatted_end_time <= " +
649                    JSON.stringify(end_time) +
650                    " and name = "+
651                    JSON.stringify(pkg_name)
652                    return rdbStore.querySql(strSQL)
653                })
654                .then(resultSet => {
655                    while (resultSet.goToNextRow()) {
656                        let sensor = "audio"
657                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
658                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
659                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
660                        results.push(tPowerSensorInfo)
661                    }
662                    SPLogger.INFO("TAG","resultSet query_applications_display-----audio" + JSON.stringify(results))
663                    return results
664                })
665        } catch (err) {
666            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
667
668        }
669    },
670    //查询表(detailed_applications_dss)
671    async query_applications_dss(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
672        const STORE_CONFIG = {
673            name: "dubai.db"
674        }
675        let results = Array<TPowerSensorInfo>()
676        try {
677            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
678                .then(async(rdbStore) => {
679                    let strSQL: string = "select sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
680                    "from detailed_applications_dss " +
681                    "where formatted_start_time >= " +
682                    JSON.stringify(start_time) +
683                    " and formatted_end_time <= " +
684                    JSON.stringify(end_time) +
685                    " and name = "+
686                    JSON.stringify(pkg_name)
687                    return rdbStore.querySql(strSQL)
688                })
689                .then(resultSet => {
690                    while (resultSet.goToNextRow()) {
691                        let sensor = "dss"
692                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
693                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
694                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
695                        results.push(tPowerSensorInfo)
696                    }
697                    SPLogger.INFO("TAG","resultSet query_applications_display-----dss" + JSON.stringify(results))
698                    return results
699                })
700        } catch (err) {
701            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
702
703        }
704    },
705    //查询表(detailed_applications_ddr)
706    async query_applications_ddr(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
707        const STORE_CONFIG = {
708            name: "dubai.db"
709        }
710        let results = Array<TPowerSensorInfo>()
711        try {
712            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
713                .then(async(rdbStore) => {
714                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
715                    "from detailed_applications_ddr " +
716                    "where formatted_start_time >= " +
717                    JSON.stringify(start_time) +
718                    " and formatted_end_time <= " +
719                    JSON.stringify(end_time) +
720                    " and name = "+
721                    JSON.stringify(pkg_name)
722                    return rdbStore.querySql(strSQL)
723                })
724                .then(resultSet => {
725
726                    while (resultSet.goToNextRow()) {
727                        let sensor = "ddr"
728                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
729                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
730                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
731                        results.push(tPowerSensorInfo)
732                    }
733                    SPLogger.INFO("TAG","resultSet query_applications_display-----ddr" + JSON.stringify(results))
734                    return results
735                })
736        } catch (err) {
737            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
738
739        }
740    }, //查询表(detailed_applications_sensor)
741    async query_applications_sensor(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
742        const STORE_CONFIG = {
743            name: "dubai.db"
744        }
745        let results = Array<TPowerSensorInfo>()
746        try {
747            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
748                .then(async(rdbStore) => {
749                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
750                    "from detailed_applications_sensor " +
751                    "where formatted_start_time >= " +
752                    JSON.stringify(start_time) +
753                    " and formatted_end_time <= " +
754                    JSON.stringify(end_time) +
755                    " and name = "+
756                    JSON.stringify(pkg_name)
757                    return rdbStore.querySql(strSQL)
758                })
759                .then(resultSet => {
760                    while (resultSet.goToNextRow()) {
761                        let sensor = "sensor"
762                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
763                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
764                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
765                        results.push(tPowerSensorInfo)
766                    }
767                    SPLogger.INFO("TAG","resultSet query_applications_display-----sensor" + JSON.stringify(results))
768                    return results
769                })
770        } catch (err) {
771            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
772        }
773    },
774    //查询表(detailed_applications_rom)
775    async query_applications_rom(start_time: String, end_time: String,pkg_name:String): Promise<Array<TPowerSensorInfo>> {
776        const STORE_CONFIG = {
777            name: "dubai.db"
778        }
779        let results = Array<TPowerSensorInfo>()
780        try {
781            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
782                .then(async(rdbStore) => {
783                    let strSQL: string = "select (sum(foreground_energy)+sum(background_energy))/3600.0 power, (sum(foreground_energy)+sum(background_energy))/((max(end_time)-min(start_time))/1000.0) current " +
784                    "from detailed_applications_rom " +
785                    "where formatted_start_time >= " +
786                    JSON.stringify(start_time) +
787                    " and formatted_end_time <= " +
788                    JSON.stringify(end_time) +
789                    " and name = "+
790                    JSON.stringify(pkg_name)
791                    return rdbStore.querySql(strSQL)
792                })
793                .then(resultSet => {
794                    while (resultSet.goToNextRow()) {
795                        let sensor = "rom"
796                        let power = resultSet.getString(resultSet.getColumnIndex("power"))
797                        let current = resultSet.getString(resultSet.getColumnIndex("current"))
798                        let tPowerSensorInfo = new TPowerSensorInfo( "",  sensor, power, current,"")
799                        results.push(tPowerSensorInfo)
800                    }
801                    SPLogger.INFO("TAG","resultSet query_applications_display-----rom" + JSON.stringify(results))
802                    return results
803                })
804        } catch (err) {
805            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
806        }
807    },
808    //查询dubai 所有进程功耗 并插入表 t_power_appinfo
809    async query_applications_power_info(start_time: string, end_time: string): Promise<Array<TPowerAppInfo>> {
810        const STORE_CONFIG = {
811            name: "dubai.db"
812        }
813        let results = Array<TPowerAppInfo>()
814        var strSQL:String = ""
815        try {
816            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
817                .then(async(rdbStore) => {
818                    let sqlWhere = " where formatted_start_time >= '{startTime}'  and formatted_end_time <= '{endTime}' "
819                    let sqlWhereReplace = sqlWhere.replace("{startTime}",start_time).replace("{endTime}",end_time)
820                    SPLogger.ERROR("TAG","resultSet query_applications_display-----sqlWhereReplace:" + sqlWhereReplace)
821                    strSQL =
822                        "select formatted_start_time, formatted_end_time, name, round((foreground_energy+background_energy)/3600.0,5) as energy "+
823                        "from detailed_applications_cpu "+
824                        sqlWhereReplace+
825                        "union all "+
826
827                        "select formatted_start_time, formatted_end_time, name,round(energy/3600.0,5) as energy "+
828                        "from detailed_applications_display "+
829                        sqlWhereReplace+
830                        "union all "+
831
832                        "select formatted_start_time, formatted_end_time, name,round(energy/3600.0,5) as energy "+
833                        "from detailed_applications_gpu "+
834                        sqlWhereReplace+
835                        "union all "+
836
837                        "select formatted_start_time, formatted_end_time, name,round(energy/3600.0,5) as energy "+
838                        "from detailed_applications_system_idle "+
839                        sqlWhereReplace+
840                        "union all "+
841
842                        "select formatted_start_time, formatted_end_time, name, round((foreground_energy+background_energy)/3600.0,5) as energy "+
843                        "from detailed_applications_wifi_data "+
844                        sqlWhereReplace+
845                        "union all "+
846
847                        "select formatted_start_time, formatted_end_time, name, round((foreground_energy+background_energy)/3600.0,5) as energy "+
848                        "from detailed_applications_sensor "+
849                        sqlWhereReplace+
850                        "union all "+
851
852                        "select formatted_start_time, formatted_end_time, name, round((foreground_energy+background_energy)/3600.0,5) as energy "+
853                        "from detailed_applications_audio "+
854                        sqlWhereReplace
855
856                    return rdbStore.querySql(strSQL.toString())
857                })
858                .then(resultSet => {
859                    SPLogger.ERROR("TAG","resultSet query_applications_display-----result L:" + resultSet.rowCount)
860                    let tMap:Map<String,String> = new Map
861                    let totalSumEnergy:number = 0.0
862                    while (resultSet.goToNextRow()) {
863                        let sum_energy = resultSet.getString(resultSet.getColumnIndex("energy"))
864                        totalSumEnergy = totalSumEnergy + Number(sum_energy)
865                        let name = resultSet.getString(resultSet.getColumnIndex("name"))
866                        let existElement = tMap.get(name)
867                        if(existElement!=undefined){
868                            //存在则修改
869                            let newP:Number = Number(existElement) + Number(sum_energy)
870                            tMap.set(name,newP.toString())
871                        }else{
872                            tMap.set(name,sum_energy)
873                        }
874                    }
875
876                    //遍历去重相加后的arr
877                    for(let [name,power] of tMap){
878                        let percent = Number(power)*100 / totalSumEnergy
879                        let tPowerAppInfo = new TPowerAppInfo("", "", name, power, "0", percent.toFixed(5))
880                        SPLogger.ERROR("TAG","resultSet query_applications_display-----result0:" + JSON.stringify(tPowerAppInfo))
881                        results.push(tPowerAppInfo)
882                    }
883                    return results.sort((a, b) => parseFloat(b.power.toString()) -  parseFloat(a.power.toString())).slice(0,20)
884                })
885                .then(results =>{
886                    SPLogger.ERROR("TAG","resultSet query_applications_display-----result after:" + results.length)
887                    return results
888                })
889        } catch (err) {
890            SPLogger.ERROR(TAG,"resultSet query_applications_display err22222:"+err)
891        }
892    },
893
894    //查询 t_powerapp_info
895    async query_powerapp_info(pathSuffix: number): Promise<Array<TPowerAppInfo>> {
896        const STORE_CONFIG = {
897            name: pathSuffix+".db"
898        }
899        let results = Array<TPowerAppInfo>()
900        try {
901            return await dataRdb.getRdbStore(globalThis.abilityContext, STORE_CONFIG, 1)
902                .then(async(rdbStore) => {
903                    let strSQL: string = "select * " +
904                    "from task_powerapp_info order by energy desc  "
905
906                    return rdbStore.querySql(strSQL)
907                })
908                .then(resultSet => {
909                    while (resultSet.goToNextRow()) {
910                        let process =resultSet.getString(resultSet.getColumnIndex("process"))
911                        let energy = resultSet.getString(resultSet.getColumnIndex("energy"))
912                        let percent = resultSet.getString(resultSet.getColumnIndex("percent"))
913
914                        let tPowerAppInfo = new TPowerAppInfo("", "", process, energy, "0", percent)
915                        results.push(tPowerAppInfo)
916                    }
917                    return results
918                })
919        } catch (err) {
920            SPLogger.ERROR(TAG,"resultSet query_applications_display query_powerapp_info:"+err)
921        }
922    },
923}
924