diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6d3d99d..9b4acfd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -131,6 +131,4 @@ implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") //图表 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - //日期、时间选择器 - implementation("com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.13") } \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6d3d99d..9b4acfd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -131,6 +131,4 @@ implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") //图表 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - //日期、时间选择器 - implementation("com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.13") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java index 064a17f..8a312c8 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java @@ -74,6 +74,7 @@ private String alarmValue; private String cancelTime; private String deviceId; + private String deviceCode; private String id; private String projectId; private String projectState; @@ -179,6 +180,14 @@ this.deviceId = deviceId; } + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + public String getId() { return id; } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6d3d99d..9b4acfd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -131,6 +131,4 @@ implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") //图表 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - //日期、时间选择器 - implementation("com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.13") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java index 064a17f..8a312c8 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java @@ -74,6 +74,7 @@ private String alarmValue; private String cancelTime; private String deviceId; + private String deviceCode; private String id; private String projectId; private String projectState; @@ -179,6 +180,14 @@ this.deviceId = deviceId; } + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + public String getId() { return id; } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index cbdf60e..b97e7a7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -20,6 +20,7 @@ import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -28,6 +29,7 @@ class AlarmListActivity : KotlinBaseActivity() { + private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity private lateinit var systemViewModel: SystemViewModel private lateinit var alarmAdapter: NormalRecyclerAdapter @@ -180,7 +182,7 @@ item.alarmType == "9" || item.alarmType == "10" ) { - navigatePageTo() + navigatePageTo(item.toJson()) } else { "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) } diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6d3d99d..9b4acfd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -131,6 +131,4 @@ implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") //图表 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - //日期、时间选择器 - implementation("com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.13") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java index 064a17f..8a312c8 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java @@ -74,6 +74,7 @@ private String alarmValue; private String cancelTime; private String deviceId; + private String deviceCode; private String id; private String projectId; private String projectState; @@ -179,6 +180,14 @@ this.deviceId = deviceId; } + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + public String getId() { return id; } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index cbdf60e..b97e7a7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -20,6 +20,7 @@ import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -28,6 +29,7 @@ class AlarmListActivity : KotlinBaseActivity() { + private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity private lateinit var systemViewModel: SystemViewModel private lateinit var alarmAdapter: NormalRecyclerAdapter @@ -180,7 +182,7 @@ item.alarmType == "9" || item.alarmType == "10" ) { - navigatePageTo() + navigatePageTo(item.toJson()) } else { "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) } 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 cb8fc3b..7fe97df 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 @@ -1,22 +1,43 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initConfig import com.casic.br.operationsite.extensions.initImmersionBar +import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.utils.RuntimeCache +import com.casic.br.operationsite.vm.TubeViewModel +import com.casic.br.operationsite.widgets.LineChartMarkerView +import com.github.mikephil.charting.data.Entry +import com.github.mikephil.charting.data.LineData +import com.github.mikephil.charting.data.LineDataSet +import com.github.mikephil.charting.interfaces.datasets.ILineDataSet +import com.google.gson.Gson +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.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.widget.TitleBarView class GasDetailActivity : KotlinBaseActivity() { private val kTag = "GasDetailActivity" + private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - /** * 地图初始化设置 * */ @@ -26,6 +47,64 @@ val uiSettings = aMap.uiSettings uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + + val jsonValue = intent.getStringExtra(LiteKitConstant.INTENT_PARAM_KEY)!! + val rawType = object : TypeToken() {}.rawType + val dataModel = gson.fromJson(jsonValue, rawType) + + binding.deviceCodeView.text = "产品编号:${dataModel.deviceCode}" + binding.belongView.text = "所属项目:${dataModel.workTitle}" + binding.projectLeaderView.text = "项目负责人:${dataModel.workPersonName}" + + //初始化趋势图 + binding.lineChart.initConfig() + val xAxisLabels = ArrayList() + val strengthEntries = ArrayList() + val lineDataSets = ArrayList() + val dataSet = LineDataSet(strengthEntries, "") + + tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] + 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() + } + } + tubeViewModel.getTubeGasHistory(this, dataModel.deviceCode, RuntimeCache.projectId) + + //标记设备 + if (dataModel.alarmLat.isNotBlank() && dataModel.alarmLng.isNotBlank()) { + val latLng = LatLng(dataModel.alarmLat.toDouble(), dataModel.alarmLng.toDouble()) + val cameraPosition = CameraPosition(latLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + + val marker = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + .title(dataModel.alarmTypeName) + .snippet(dataModel.alarmTime) + aMap.addMarker(marker) + } } override fun initViewBinding(): ActivityGasDetailBinding { diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6d3d99d..9b4acfd 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -131,6 +131,4 @@ implementation("cn.bertsir.zbarLibary:zbarlibary:1.4.2") //图表 implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - //日期、时间选择器 - implementation("com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.13") } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java index 064a17f..8a312c8 100644 --- a/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java +++ b/app/src/main/java/com/casic/br/operationsite/model/AlarmListModel.java @@ -74,6 +74,7 @@ private String alarmValue; private String cancelTime; private String deviceId; + private String deviceCode; private String id; private String projectId; private String projectState; @@ -179,6 +180,14 @@ this.deviceId = deviceId; } + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + public String getId() { return id; } diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index cbdf60e..b97e7a7 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -20,6 +20,7 @@ import com.pengxh.kt.lite.extensions.isNetworkConnected import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog @@ -28,6 +29,7 @@ class AlarmListActivity : KotlinBaseActivity() { + private val kTag = "AlarmListActivity" private val context = this@AlarmListActivity private lateinit var systemViewModel: SystemViewModel private lateinit var alarmAdapter: NormalRecyclerAdapter @@ -180,7 +182,7 @@ item.alarmType == "9" || item.alarmType == "10" ) { - navigatePageTo() + navigatePageTo(item.toJson()) } else { "暂时仅支持燃气设备查看浓度趋势".show(this@AlarmListActivity) } 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 cb8fc3b..7fe97df 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 @@ -1,22 +1,43 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.MarkerOptions import com.casic.br.operationsite.R import com.casic.br.operationsite.databinding.ActivityGasDetailBinding +import com.casic.br.operationsite.extensions.initConfig import com.casic.br.operationsite.extensions.initImmersionBar +import com.casic.br.operationsite.model.AlarmListModel +import com.casic.br.operationsite.utils.RuntimeCache +import com.casic.br.operationsite.vm.TubeViewModel +import com.casic.br.operationsite.widgets.LineChartMarkerView +import com.github.mikephil.charting.data.Entry +import com.github.mikephil.charting.data.LineData +import com.github.mikephil.charting.data.LineDataSet +import com.github.mikephil.charting.interfaces.datasets.ILineDataSet +import com.google.gson.Gson +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.timestampToTime import com.pengxh.kt.lite.utils.ActivityStackManager +import com.pengxh.kt.lite.utils.LiteKitConstant import com.pengxh.kt.lite.widget.TitleBarView class GasDetailActivity : KotlinBaseActivity() { private val kTag = "GasDetailActivity" + private val gson by lazy { Gson() } private lateinit var aMap: AMap + private lateinit var tubeViewModel: TubeViewModel override fun initOnCreate(savedInstanceState: Bundle?) { ActivityStackManager.addActivity(this) - /** * 地图初始化设置 * */ @@ -26,6 +47,64 @@ val uiSettings = aMap.uiSettings uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图随手势改变方位 + + val jsonValue = intent.getStringExtra(LiteKitConstant.INTENT_PARAM_KEY)!! + val rawType = object : TypeToken() {}.rawType + val dataModel = gson.fromJson(jsonValue, rawType) + + binding.deviceCodeView.text = "产品编号:${dataModel.deviceCode}" + binding.belongView.text = "所属项目:${dataModel.workTitle}" + binding.projectLeaderView.text = "项目负责人:${dataModel.workPersonName}" + + //初始化趋势图 + binding.lineChart.initConfig() + val xAxisLabels = ArrayList() + val strengthEntries = ArrayList() + val lineDataSets = ArrayList() + val dataSet = LineDataSet(strengthEntries, "") + + tubeViewModel = ViewModelProvider(this)[TubeViewModel::class.java] + 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() + } + } + tubeViewModel.getTubeGasHistory(this, dataModel.deviceCode, RuntimeCache.projectId) + + //标记设备 + if (dataModel.alarmLat.isNotBlank() && dataModel.alarmLng.isNotBlank()) { + val latLng = LatLng(dataModel.alarmLat.toDouble(), dataModel.alarmLng.toDouble()) + val cameraPosition = CameraPosition(latLng, aMap.maxZoomLevel, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + + val marker = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.map_pin_device)) + .title(dataModel.alarmTypeName) + .snippet(dataModel.alarmTime) + aMap.addMarker(marker) + } } override fun initViewBinding(): ActivityGasDetailBinding { diff --git a/app/src/main/res/layout/activity_gas_detail.xml b/app/src/main/res/layout/activity_gas_detail.xml index 2b2bc2f..52badb6 100644 --- a/app/src/main/res/layout/activity_gas_detail.xml +++ b/app/src/main/res/layout/activity_gas_detail.xml @@ -86,6 +86,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginVertical="@dimen/dp_5" + android:singleLine="true" android:text="所属项目:XXX" android:textColor="@color/mainTextColor" android:textSize="@dimen/sp_14" />