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