|
@@ -100,70 +100,79 @@ class AdmViewModel(private val repository: AdmRepository) : ViewModel() {
|
|
|
Log.d("downloadBuilding", "buildings is empty")
|
|
|
return@launch
|
|
|
}
|
|
|
- for (building in buildings) {
|
|
|
- repository.requestBuilding(
|
|
|
- AdmRequest(
|
|
|
- userId = "bdtp",
|
|
|
- projectId = building.projectId!!,
|
|
|
- groupCode = building.groupCode!!,
|
|
|
- buildingId = if (isProject) "" else building.id,
|
|
|
- clientId = sp.getString(CLIENT_ID, "") ?: "",
|
|
|
- bdtpDownloadTs = sp.getLong(
|
|
|
- "${
|
|
|
- if (isProject)
|
|
|
- building.projectId
|
|
|
- else
|
|
|
- building.id
|
|
|
- }.$BDTP_TS",
|
|
|
- 0L
|
|
|
- ),
|
|
|
- admDownloadTs = sp.getLong(
|
|
|
- "${
|
|
|
- if (isProject)
|
|
|
- building.projectId
|
|
|
- else
|
|
|
- building.id
|
|
|
- }.$ADM_TS",
|
|
|
- 0L
|
|
|
- )
|
|
|
- )
|
|
|
- ) {
|
|
|
- Log.e(
|
|
|
- "downloadBuilding",
|
|
|
- "bdtpDownloadTs:${it.bdtpDownloadTs}, admDownloadTs:${it.admDownloadTs}"
|
|
|
- )
|
|
|
-
|
|
|
- sp.edit {
|
|
|
- putLong(
|
|
|
- "${if (isProject) building.projectId else building.id}.$BDTP_TS",
|
|
|
- it.bdtpDownloadTs
|
|
|
- )
|
|
|
- }
|
|
|
-
|
|
|
- sp.edit {
|
|
|
- putLong(
|
|
|
- "${if (isProject) building.projectId else building.id}.$ADM_TS",
|
|
|
- it.admDownloadTs
|
|
|
- )
|
|
|
+ val job = launch { // 启动一个总协程
|
|
|
+ for (building in buildings) {
|
|
|
+ launch { // 为每个下载任务启动协程
|
|
|
+ repository.requestBuilding(
|
|
|
+ AdmRequest(
|
|
|
+ userId = "bdtp",
|
|
|
+ projectId = building.projectId!!,
|
|
|
+ groupCode = building.groupCode!!,
|
|
|
+ buildingId = if (isProject) "" else building.id,
|
|
|
+ clientId = sp.getString(CLIENT_ID, "") ?: "",
|
|
|
+ bdtpDownloadTs = sp.getLong(
|
|
|
+ "${
|
|
|
+ if (isProject)
|
|
|
+ building.projectId
|
|
|
+ else
|
|
|
+ building.id
|
|
|
+ }.$BDTP_TS",
|
|
|
+ 0L
|
|
|
+ ),
|
|
|
+ admDownloadTs = sp.getLong(
|
|
|
+ "${
|
|
|
+ if (isProject)
|
|
|
+ building.projectId
|
|
|
+ else
|
|
|
+ building.id
|
|
|
+ }.$ADM_TS",
|
|
|
+ 0L
|
|
|
+ )
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ Log.e(
|
|
|
+ "downloadBuilding",
|
|
|
+ "bdtpDownloadTs:${it.bdtpDownloadTs}, admDownloadTs:${it.admDownloadTs}"
|
|
|
+ )
|
|
|
+
|
|
|
+ sp.edit {
|
|
|
+ putLong(
|
|
|
+ "${if (isProject) building.projectId else building.id}.$BDTP_TS",
|
|
|
+ it.bdtpDownloadTs
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ sp.edit {
|
|
|
+ putLong(
|
|
|
+ "${if (isProject) building.projectId else building.id}.$ADM_TS",
|
|
|
+ it.admDownloadTs
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ job.join()
|
|
|
|
|
|
// 下载地图
|
|
|
- val floors = repository.getFloors()
|
|
|
- floors.forEach {
|
|
|
- val json = it.infos?.asJsonObject
|
|
|
- val floorMap = json?.get("floorMap")?.asString ?: ""
|
|
|
- if (floorMap.isNotEmpty()) {
|
|
|
- val mapString = OkhttpUtil.getGzipMap("$IP$pathDownloadMap${floorMap}")
|
|
|
- val mapFile =
|
|
|
- File(DemoApp.getInstance()?.getExternalFilesDir("floorMap"), it.id)
|
|
|
- FileOutputStream(mapFile).use { output -> output.write(mapString.toByteArray()) }
|
|
|
- it.floorMap = mapFile.absolutePath
|
|
|
- repository.updateObject(it)
|
|
|
+ val gzipJob = launch {
|
|
|
+ val floors = repository.getFloors()
|
|
|
+ floors.forEach {
|
|
|
+ launch(Dispatchers.IO) {
|
|
|
+ val json = it.infos?.asJsonObject
|
|
|
+ val floorMap = json?.get("floorMap")?.asString ?: ""
|
|
|
+ if (floorMap.isNotEmpty()) {
|
|
|
+ val mapString = OkhttpUtil.getGzipMap("$IP$pathDownloadMap${floorMap}")
|
|
|
+ val mapFile =
|
|
|
+ File(DemoApp.getInstance()?.getExternalFilesDir("floorMap"), it.id)
|
|
|
+ FileOutputStream(mapFile).use { output -> output.write(mapString.toByteArray()) }
|
|
|
+ it.floorMap = mapFile.absolutePath
|
|
|
+ repository.updateObject(it)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ gzipJob.join()
|
|
|
withContext(Dispatchers.Main) {
|
|
|
block?.invoke()
|
|
|
}
|