diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index 145a8bd..7c1a750 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -24,9 +24,11 @@ import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LiteKitConstant +import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import java.time.Duration import java.time.LocalDateTime @@ -34,7 +36,6 @@ class GasDetailActivity : KotlinBaseActivity() { - private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } @@ -67,32 +68,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel.tubeGasHistoryLiveData.observe(this) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) - } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(this) - val markerView = LineChartMarkerView(this) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } - if (dataModel.alarmTime.isNotBlank()) { //报警点前后时间的浓度 2025-03-19 17:05:39 val alarmTimeStr = dataModel.alarmTime @@ -105,11 +80,43 @@ val halfHourAfterStr = halfHourAfter.format(formatter) tubeViewModel.getTubeGasHistory( - this, dataModel.deviceCode, RuntimeCache.projectId, halfHourBeforeStr, - halfHourAfterStr + halfHourAfterStr, + onLoading = { + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(this) + val markerView = LineChartMarkerView(this) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index 145a8bd..7c1a750 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -24,9 +24,11 @@ import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LiteKitConstant +import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import java.time.Duration import java.time.LocalDateTime @@ -34,7 +36,6 @@ class GasDetailActivity : KotlinBaseActivity() { - private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } @@ -67,32 +68,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel.tubeGasHistoryLiveData.observe(this) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) - } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(this) - val markerView = LineChartMarkerView(this) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } - if (dataModel.alarmTime.isNotBlank()) { //报警点前后时间的浓度 2025-03-19 17:05:39 val alarmTimeStr = dataModel.alarmTime @@ -105,11 +80,43 @@ val halfHourAfterStr = halfHourAfter.format(formatter) tubeViewModel.getTubeGasHistory( - this, dataModel.deviceCode, RuntimeCache.projectId, halfHourBeforeStr, - halfHourAfterStr + halfHourAfterStr, + onLoading = { + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(this) + val markerView = LineChartMarkerView(this) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index 7ab58ee..baeedfd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -105,20 +105,6 @@ else -> LoadingDialog.dismiss() } } - - tubeViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "安装中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - "安装成功".show(this) - finish() - } - - else -> LoadingDialog.dismiss() - } - } } private val selectLocationLauncher = registerForActivityResult( @@ -190,7 +176,6 @@ imagePaths.first() } tubeViewModel.install( - this, "", binding.latitudeView.text.toString(), userId, @@ -199,7 +184,19 @@ "", binding.deviceCodeView.text.toString(), RuntimeCache.projectId, - binding.locationView.text.toString() + binding.locationView.text.toString(), + onLoading = { + LoadingDialog.show(this, "安装中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + "安装成功".show(this) + finish() + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index 145a8bd..7c1a750 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -24,9 +24,11 @@ import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LiteKitConstant +import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import java.time.Duration import java.time.LocalDateTime @@ -34,7 +36,6 @@ class GasDetailActivity : KotlinBaseActivity() { - private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } @@ -67,32 +68,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel.tubeGasHistoryLiveData.observe(this) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) - } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(this) - val markerView = LineChartMarkerView(this) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } - if (dataModel.alarmTime.isNotBlank()) { //报警点前后时间的浓度 2025-03-19 17:05:39 val alarmTimeStr = dataModel.alarmTime @@ -105,11 +80,43 @@ val halfHourAfterStr = halfHourAfter.format(formatter) tubeViewModel.getTubeGasHistory( - this, dataModel.deviceCode, RuntimeCache.projectId, halfHourBeforeStr, - halfHourAfterStr + halfHourAfterStr, + onLoading = { + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(this) + val markerView = LineChartMarkerView(this) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index 7ab58ee..baeedfd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -105,20 +105,6 @@ else -> LoadingDialog.dismiss() } } - - tubeViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "安装中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - "安装成功".show(this) - finish() - } - - else -> LoadingDialog.dismiss() - } - } } private val selectLocationLauncher = registerForActivityResult( @@ -190,7 +176,6 @@ imagePaths.first() } tubeViewModel.install( - this, "", binding.latitudeView.text.toString(), userId, @@ -199,7 +184,19 @@ "", binding.deviceCodeView.text.toString(), RuntimeCache.projectId, - binding.locationView.text.toString() + binding.locationView.text.toString(), + onLoading = { + LoadingDialog.show(this, "安装中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + "安装成功".show(this) + finish() + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 49a8d3b..e224ec5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -299,37 +299,38 @@ val startTime = current - 2 * 60 * 60 * 1000 val endTime = current tubeViewModel.getTubeGasHistory( - context, deviceData.deviceCode, RuntimeCache.projectId, startTime.timestampToCompleteDate(), - endTime.timestampToCompleteDate() - ) - tubeViewModel.tubeGasHistoryLiveData.observe(this@WorkSiteTabActivity) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) + endTime.timestampToCompleteDate(), + onLoading = {}, + onSuccess = { + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(context) + val markerView = LineChartMarkerView(context) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(context) - val markerView = LineChartMarkerView(context) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } + }, + onFailed = {} + ) } else { infoWindow = inflater.inflate(R.layout.popup_worker_info, null) clickedMarker = this diff --git a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt index 145a8bd..7c1a750 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/GasDetailActivity.kt @@ -24,9 +24,11 @@ import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LiteKitConstant +import com.pengxh.kt.lite.utils.LoadingDialog import com.pengxh.kt.lite.widget.TitleBarView import java.time.Duration import java.time.LocalDateTime @@ -34,7 +36,6 @@ class GasDetailActivity : KotlinBaseActivity() { - private val kTag = "GasDetailActivity" private val gson by lazy { Gson() } private val formatter by lazy { DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") } private val tubeViewModel by lazy { ViewModelProvider(this)[TubeViewModel::class.java] } @@ -67,32 +68,6 @@ val lineDataSets = ArrayList() val dataSet = LineDataSet(strengthEntries, "") - tubeViewModel.tubeGasHistoryLiveData.observe(this) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) - } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(this) - val markerView = LineChartMarkerView(this) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } - if (dataModel.alarmTime.isNotBlank()) { //报警点前后时间的浓度 2025-03-19 17:05:39 val alarmTimeStr = dataModel.alarmTime @@ -105,11 +80,43 @@ val halfHourAfterStr = halfHourAfter.format(formatter) tubeViewModel.getTubeGasHistory( - this, dataModel.deviceCode, RuntimeCache.projectId, halfHourBeforeStr, - halfHourAfterStr + halfHourAfterStr, + onLoading = { + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(this) + val markerView = LineChartMarkerView(this) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() + } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } diff --git a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt index 7ab58ee..baeedfd 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/InstallEquipmentActivity.kt @@ -105,20 +105,6 @@ else -> LoadingDialog.dismiss() } } - - tubeViewModel.loadState.observe(this) { - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "安装中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - "安装成功".show(this) - finish() - } - - else -> LoadingDialog.dismiss() - } - } } private val selectLocationLauncher = registerForActivityResult( @@ -190,7 +176,6 @@ imagePaths.first() } tubeViewModel.install( - this, "", binding.latitudeView.text.toString(), userId, @@ -199,7 +184,19 @@ "", binding.deviceCodeView.text.toString(), RuntimeCache.projectId, - binding.locationView.text.toString() + binding.locationView.text.toString(), + onLoading = { + LoadingDialog.show(this, "安装中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + "安装成功".show(this) + finish() + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) + } ) } } diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 49a8d3b..e224ec5 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -299,37 +299,38 @@ val startTime = current - 2 * 60 * 60 * 1000 val endTime = current tubeViewModel.getTubeGasHistory( - context, deviceData.deviceCode, RuntimeCache.projectId, startTime.timestampToCompleteDate(), - endTime.timestampToCompleteDate() - ) - tubeViewModel.tubeGasHistoryLiveData.observe(this@WorkSiteTabActivity) { - if (it.code == 200) { - it.data.forEachIndexed { index, x -> - xAxisLabels.add(System.currentTimeMillis().timestampToTime()) - //浓度线 - strengthEntries.add( - Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") - ) + endTime.timestampToCompleteDate(), + onLoading = {}, + onSuccess = { + it.data?.let { data -> + data.forEachIndexed { index, x -> + xAxisLabels.add(System.currentTimeMillis().timestampToTime()) + //浓度线 + strengthEntries.add( + Entry(index.toFloat(), x.gasValue.toFloat(), "浓度") + ) + } + //设置数据 + dataSet.values = strengthEntries + lineDataSets.add(dataSet) + val lineData = LineData(lineDataSets) + lineData.setDrawValues(false) + + dataSet.color = R.color.mainThemeColor.convertColor(context) + val markerView = LineChartMarkerView(context) + markerView.chartView = binding.lineChart + markerView.setXAxisDate(xAxisLabels) + binding.lineChart.marker = markerView + + binding.lineChart.data = lineData + binding.lineChart.invalidate() } - //设置数据 - dataSet.values = strengthEntries - lineDataSets.add(dataSet) - val lineData = LineData(lineDataSets) - lineData.setDrawValues(false) - - dataSet.color = R.color.mainThemeColor.convertColor(context) - val markerView = LineChartMarkerView(context) - markerView.chartView = binding.lineChart - markerView.setXAxisDate(xAxisLabels) - binding.lineChart.marker = markerView - - binding.lineChart.data = lineData - binding.lineChart.invalidate() - } - } + }, + onFailed = {} + ) } else { infoWindow = inflater.inflate(R.layout.popup_worker_info, null) clickedMarker = this diff --git a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt index dc3a655..115ab72 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/TubeViewModel.kt @@ -1,25 +1,14 @@ package com.casic.br.operationsite.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage +import androidx.lifecycle.ViewModel +import com.casic.br.operationsite.extensions.getResponseHeader import com.casic.br.operationsite.model.TubeGasHistoryModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.unpackingResponse -class TubeViewModel : BaseViewModel() { - - private val gson = Gson() - val tubeGasHistoryLiveData = MutableLiveData() - +class TubeViewModel : ViewModel() { fun install( - context: Context, latGPS: String, latGCJ02: String, operationUserId: String, @@ -28,9 +17,12 @@ lngGPS: String, deviceCode: String, projectId: String, - location: String + location: String, + onLoading: () -> Unit, + onSuccess: () -> Unit, + onFailed: (String) -> Unit ) = launch({ - loadState.value = LoadState.Loading + onLoading() val response = RetrofitServiceManager.install( latGPS, latGCJ02, @@ -42,42 +34,37 @@ projectId, location ) - when (response.getResponseCode()) { - 200 -> loadState.value = LoadState.Success - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess() + } else { + onFailed(header.second) } }, { - loadState.value = LoadState.Fail - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) fun getTubeGasHistory( - context: Context, deviceCode: String, projectId: String, startTime: String, - endTime: String + endTime: String, + onLoading: () -> Unit, + onSuccess: (TubeGasHistoryModel) -> Unit, + onFailed: (String) -> Unit ) = launch({ + onLoading() val response = RetrofitServiceManager.getTubeGasHistory( deviceCode, projectId, startTime, endTime ) - when (response.getResponseCode()) { - 200 -> { - tubeGasHistoryLiveData.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } - - else -> { - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file