diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
+
+
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
index 34d3dbf..753f4af 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
@@ -7,7 +7,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.WellDetailViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -15,7 +15,7 @@
class WellDetailActivity : BaseActivity() {
- private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellDetailViewModel: WellViewModel
private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -27,7 +27,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+ wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
index 34d3dbf..753f4af 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
@@ -7,7 +7,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.WellDetailViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -15,7 +15,7 @@
class WellDetailActivity : BaseActivity() {
- private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellDetailViewModel: WellViewModel
private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -27,7 +27,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+ wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
deleted file mode 100644
index f89c269..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.WellDetailModel
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class WellDetailViewModel : BaseViewModel() {
-
- private val gson = Gson()
- val detailModel = MutableLiveData()
-
- fun obtainWellDetail(id: String) = launch({
- loadState.value = LoadState.Loading
- val response = RetrofitServiceManager.obtainWellDetail(id)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- loadState.value = LoadState.Success
- detailModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- loadState.value = LoadState.Fail
- response.toErrorMessage().show()
- }
- }, {
- loadState.value = LoadState.Fail
- it.printStackTrace()
- })
-}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
index 34d3dbf..753f4af 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
@@ -7,7 +7,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.WellDetailViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -15,7 +15,7 @@
class WellDetailActivity : BaseActivity() {
- private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellDetailViewModel: WellViewModel
private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -27,7 +27,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+ wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
deleted file mode 100644
index f89c269..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.WellDetailModel
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class WellDetailViewModel : BaseViewModel() {
-
- private val gson = Gson()
- val detailModel = MutableLiveData()
-
- fun obtainWellDetail(id: String) = launch({
- loadState.value = LoadState.Loading
- val response = RetrofitServiceManager.obtainWellDetail(id)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- loadState.value = LoadState.Success
- detailModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- loadState.value = LoadState.Fail
- response.toErrorMessage().show()
- }
- }, {
- loadState.value = LoadState.Fail
- it.printStackTrace()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
new file mode 100644
index 0000000..38fe9ad
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
@@ -0,0 +1,37 @@
+package com.casic.qd.smartwell.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.qd.smartwell.base.BaseViewModel
+import com.casic.qd.smartwell.extensions.launch
+import com.casic.qd.smartwell.extensions.separateResponseCode
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.toErrorMessage
+import com.casic.qd.smartwell.model.WellDetailModel
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class WellViewModel : BaseViewModel() {
+
+ private val gson = Gson()
+ val detailModel = MutableLiveData()
+
+ fun obtainWellDetail(id: String) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainWellDetail(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ detailModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
index 34d3dbf..753f4af 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
@@ -7,7 +7,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.WellDetailViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -15,7 +15,7 @@
class WellDetailActivity : BaseActivity() {
- private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellDetailViewModel: WellViewModel
private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -27,7 +27,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+ wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
deleted file mode 100644
index f89c269..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.WellDetailModel
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class WellDetailViewModel : BaseViewModel() {
-
- private val gson = Gson()
- val detailModel = MutableLiveData()
-
- fun obtainWellDetail(id: String) = launch({
- loadState.value = LoadState.Loading
- val response = RetrofitServiceManager.obtainWellDetail(id)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- loadState.value = LoadState.Success
- detailModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- loadState.value = LoadState.Fail
- response.toErrorMessage().show()
- }
- }, {
- loadState.value = LoadState.Fail
- it.printStackTrace()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
new file mode 100644
index 0000000..38fe9ad
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
@@ -0,0 +1,37 @@
+package com.casic.qd.smartwell.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.qd.smartwell.base.BaseViewModel
+import com.casic.qd.smartwell.extensions.launch
+import com.casic.qd.smartwell.extensions.separateResponseCode
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.toErrorMessage
+import com.casic.qd.smartwell.model.WellDetailModel
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class WellViewModel : BaseViewModel() {
+
+ private val gson = Gson()
+ val detailModel = MutableLiveData()
+
+ fun obtainWellDetail(id: String) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainWellDetail(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ detailModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_order_not_processed_detail.xml b/app/src/main/res/layout/activity_order_not_processed_detail.xml
new file mode 100644
index 0000000..9adbf82
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_not_processed_detail.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 59e75eb..14e233f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -52,7 +52,7 @@
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
- implementation 'androidx.appcompat:appcompat:1.4.0'
+ implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
//基础依赖库
@@ -78,8 +78,8 @@
implementation 'io.github.lucksiege:pictureselector:v3.0.4'
//图片压缩
implementation 'top.zibin:Luban:1.1.8'
- //高德地图
- implementation 'com.amap.api:3dmap:7.9.1'
+ //高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
+ implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
//返回值转换器
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f45af90..2b5967f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -61,6 +61,7 @@
+
(jobId)
+ requireContext().navigatePageTo(jobId)
}
override fun onOperationClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
new file mode 100644
index 0000000..e3859d2
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt
@@ -0,0 +1,167 @@
+package com.casic.qd.smartwell.view
+
+import android.view.View
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps.model.LatLng
+import com.amap.api.maps.model.Poi
+import com.casic.qd.smartwell.R
+import com.casic.qd.smartwell.base.BaseActivity
+import com.casic.qd.smartwell.extensions.convertColor
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.showRouteOnMap
+import com.casic.qd.smartwell.extensions.toChinese
+import com.casic.qd.smartwell.utils.Constant
+import com.casic.qd.smartwell.utils.DialogHelper
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.vm.OperationViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
+import com.casic.qd.smartwell.vm.WorkOrderViewModel
+import com.pengxh.app.multilib.widget.dialog.AlertControlDialog
+import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
+import kotlinx.android.synthetic.main.activity_order_not_processed_detail.*
+import kotlinx.android.synthetic.main.include_base_order_detail.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class OrderNotProcessedDetailActivity : BaseActivity() {
+
+ private lateinit var workOrderViewModel: WorkOrderViewModel
+ private lateinit var wellViewModel: WellViewModel
+ private lateinit var operationViewModel: OperationViewModel
+ private lateinit var jobId: String
+
+ override fun initLayoutView(): Int = R.layout.activity_order_not_processed_detail
+
+ override fun setupTopBarLayout() {
+ titleView.text = "工单详情"
+ leftBackView.visibility = View.VISIBLE
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java)
+ operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java)
+ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
+ }
+
+ override fun initEvent() {
+ workOrderViewModel.obtainWorkOrderDetail(jobId)
+ workOrderViewModel.detailModel.observe(this, {
+ if (it.code == 200) {
+ val orderDetail = it.data!![0]
+ alarmContentView.text = orderDetail.alarmContentName
+ alarmDateView.text = orderDetail.alarmTime
+ orderCodeView.text = orderDetail.jobCode
+ wellCodeView.text = orderDetail.wellCode
+ devCodeView.text = orderDetail.devcode
+ val level = orderDetail.alarmLevel.toString()
+ if (level.isBlank()) {
+ alarmLevelView.text = "未知"
+ alarmLevelView.setTextColor(R.color.mainTextColor.convertColor())
+ } else {
+ alarmLevelView.text = level.toChinese()
+ alarmLevelView.setTextColor(R.color.redTextColor.convertColor())
+ }
+ alarmValueView.text = orderDetail.alarmValue
+ val wellPosition = orderDetail.position.toString()
+ wellLocationView.text = wellPosition
+ if (wellPosition.length > 12) {
+ locationTipsView.visibility = View.VISIBLE
+ locationTipsView.setOnClickListener {
+ AlertMessageDialog.Builder()
+ .setContext(this)
+ .setTitle("窨井完整位置")
+ .setMessage(wellPosition)
+ .setPositiveButton("知道了").setOnDialogButtonClickListener {}.build()
+ .show()
+ }
+ } else {
+ locationTipsView.visibility = View.GONE
+ }
+ dispatchDateView.text = orderDetail.createTime
+
+ //接单
+ acceptOrderButton.setOnClickListener {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("操作提示")
+ .setMessage("确定要接单吗")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ if (orderDetail.jobId.toString().isBlank()) {
+ "工单ID异常,无法接单".show()
+ return
+ }
+ operationViewModel.acceptOrder(orderDetail.jobId!!)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+
+ //导航
+ navigationButton.setOnClickListener {
+ val wellId = orderDetail.wellId.toString()
+ if (wellId.isBlank()) {
+ "窨井ID异常,无法导航".show()
+ return@setOnClickListener
+ }
+ wellViewModel.obtainWellDetail(wellId)
+ }
+ wellViewModel.detailModel.observe(this, { well ->
+ if (well.code == 200) {
+ val wellDetail = well.data!!
+ val lat = wellDetail.latGaode.toString()
+ val lng = wellDetail.lngGaode.toString()
+ if (lat.isBlank() || lng.isBlank()) {
+ "窨井经纬度异常,无法开启导航".show()
+ } else {
+ Poi(
+ orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), ""
+ ).showRouteOnMap(this)
+ }
+ }
+ })
+ }
+ })
+
+ //数据加载状态处理
+ workOrderViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "数据加载中,请稍后")
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+
+ //接单状态处理
+ operationViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "接单中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //通知列表刷新数据
+// BroadcastReceiverManager.instance.sendMultiBroadcast(
+// Constant.NOT_PROCESSED_ACTION,
+// Constant.NOT_CONFIRMED_ACTION,
+// Constant.NOT_ACCEPT_ACTION
+// )
+ this.finish()
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
index 58c6db9..8c2f802 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt
@@ -2,6 +2,7 @@
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
+import com.amap.api.navi.NaviSetting
import com.casic.qd.smartwell.extensions.navigatePageTo
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.PageNavigationManager
@@ -27,6 +28,9 @@
}
private fun startSplashScreenActivity() {
+ //先把导航隐私政策声明,后面导航会用到
+ NaviSetting.updatePrivacyShow(this, true, true)
+ NaviSetting.updatePrivacyAgree(this, true)
navigatePageTo()
finish()
}
diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
index 34d3dbf..753f4af 100644
--- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
+++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt
@@ -7,7 +7,7 @@
import com.casic.qd.smartwell.utils.Constant
import com.casic.qd.smartwell.utils.DialogHelper
import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.vm.WellDetailViewModel
+import com.casic.qd.smartwell.vm.WellViewModel
import com.pengxh.app.multilib.widget.dialog.AlertMessageDialog
import kotlinx.android.synthetic.main.activity_well_detail.*
import kotlinx.android.synthetic.main.include_base_title.*
@@ -15,7 +15,7 @@
class WellDetailActivity : BaseActivity() {
- private lateinit var wellDetailViewModel: WellDetailViewModel
+ private lateinit var wellDetailViewModel: WellViewModel
private lateinit var wellId: String
override fun initLayoutView(): Int = R.layout.activity_well_detail
@@ -27,7 +27,7 @@
override fun initData() {
wellId = intent.getStringExtra(Constant.INTENT_PARAM)!!
- wellDetailViewModel = ViewModelProvider(this).get(WellDetailViewModel::class.java)
+ wellDetailViewModel = ViewModelProvider(this).get(WellViewModel::class.java)
}
override fun initEvent() {
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
deleted file mode 100644
index f89c269..0000000
--- a/app/src/main/java/com/casic/qd/smartwell/vm/WellDetailViewModel.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.casic.qd.smartwell.vm
-
-import androidx.lifecycle.MutableLiveData
-import com.casic.qd.smartwell.base.BaseViewModel
-import com.casic.qd.smartwell.extensions.launch
-import com.casic.qd.smartwell.extensions.separateResponseCode
-import com.casic.qd.smartwell.extensions.show
-import com.casic.qd.smartwell.extensions.toErrorMessage
-import com.casic.qd.smartwell.model.WellDetailModel
-import com.casic.qd.smartwell.utils.LoadState
-import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
-import com.google.gson.Gson
-import com.google.gson.reflect.TypeToken
-
-class WellDetailViewModel : BaseViewModel() {
-
- private val gson = Gson()
- val detailModel = MutableLiveData()
-
- fun obtainWellDetail(id: String) = launch({
- loadState.value = LoadState.Loading
- val response = RetrofitServiceManager.obtainWellDetail(id)
- val responseCode = response.separateResponseCode()
- if (responseCode == 200) {
- loadState.value = LoadState.Success
- detailModel.value = gson.fromJson(
- response, object : TypeToken() {}.type
- )
- } else {
- loadState.value = LoadState.Fail
- response.toErrorMessage().show()
- }
- }, {
- loadState.value = LoadState.Fail
- it.printStackTrace()
- })
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
new file mode 100644
index 0000000..38fe9ad
--- /dev/null
+++ b/app/src/main/java/com/casic/qd/smartwell/vm/WellViewModel.kt
@@ -0,0 +1,37 @@
+package com.casic.qd.smartwell.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.qd.smartwell.base.BaseViewModel
+import com.casic.qd.smartwell.extensions.launch
+import com.casic.qd.smartwell.extensions.separateResponseCode
+import com.casic.qd.smartwell.extensions.show
+import com.casic.qd.smartwell.extensions.toErrorMessage
+import com.casic.qd.smartwell.model.WellDetailModel
+import com.casic.qd.smartwell.utils.LoadState
+import com.casic.qd.smartwell.utils.retrofit.RetrofitServiceManager
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+
+class WellViewModel : BaseViewModel() {
+
+ private val gson = Gson()
+ val detailModel = MutableLiveData()
+
+ fun obtainWellDetail(id: String) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainWellDetail(id)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ detailModel.value = gson.fromJson(
+ response, object : TypeToken() {}.type
+ )
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show()
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_order_not_processed_detail.xml b/app/src/main/res/layout/activity_order_not_processed_detail.xml
new file mode 100644
index 0000000..9adbf82
--- /dev/null
+++ b/app/src/main/res/layout/activity_order_not_processed_detail.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_order_not_processed_recycleview.xml b/app/src/main/res/layout/item_order_not_processed_recycleview.xml
index a88e14b..a353d63 100644
--- a/app/src/main/res/layout/item_order_not_processed_recycleview.xml
+++ b/app/src/main/res/layout/item_order_not_processed_recycleview.xml
@@ -21,10 +21,9 @@
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_5"
android:layout_weight="1"
- android:fontFamily="sans-serif-black"
android:text="@string/app_name"
android:textColor="@color/redTextColor"
- android:textSize="@dimen/titleFontSize" />
+ android:textSize="@dimen/textFontSize" />
+ android:textColor="@color/subTextColor" />
+ android:textColor="@color/redTextColor" />
+ android:textColor="@color/subTextColor" />
+ android:textColor="@color/mainThemeColor"
+ app:qmui_borderColor="@color/mainThemeColor"
+ app:qmui_borderWidth="1px" />
\ No newline at end of file