diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
new file mode 100644
index 0000000..4af9b53
--- /dev/null
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
new file mode 100644
index 0000000..4af9b53
--- /dev/null
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index bcae777..30b2e5e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -74,6 +74,7 @@
android:textColor="@color/white"
android:textSize="@dimen/titleFontSize"
app:qmui_backgroundColor="@color/mainThemeColor"
+ app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="20dp" />
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
new file mode 100644
index 0000000..4af9b53
--- /dev/null
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index bcae777..30b2e5e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -74,6 +74,7 @@
android:textColor="@color/white"
android:textSize="@dimen/titleFontSize"
app:qmui_backgroundColor="@color/mainThemeColor"
+ app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="20dp" />
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
new file mode 100644
index 0000000..4af9b53
--- /dev/null
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index bcae777..30b2e5e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -74,6 +74,7 @@
android:textColor="@color/white"
android:textSize="@dimen/titleFontSize"
app:qmui_backgroundColor="@color/mainThemeColor"
+ app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="20dp" />
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/jingshi.png b/app/src/main/res/mipmap-xxhdpi/jingshi.png
new file mode 100644
index 0000000..f567df5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/jingshi.png
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class? =
+ TaskRecordViewModel::class.java
+
+ override fun initLayoutView(): Int = R.layout.activity_event_list
+
+ override fun setupTopBarLayout() {
+ PageNavigationManager.addActivity(this)
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "事件清单"
+ }
+
+ override fun initData() {
+ val id = intent.getStringExtra("id")!!
+ viewModel.searchByInspection(id)
+ viewModel.resultModel.observe(this, Observer {
+ if (it.code == 200) {
+ if (it.data!!.list!!.isEmpty()) {
+ "抱歉,无法查询到相关记录".show(this)
+ } else {
+ val eventAdapter = EventListAdapter(this, it.data!!.list!!)
+ eventRecyclerView!!.layoutManager = LinearLayoutManager(this)
+ eventRecyclerView.adapter = eventAdapter
+ eventAdapter.setOnItemClickListener(object :
+ EventListAdapter.OnItemClickListener {
+ override fun onClick(position: Int) {
+ val intent =
+ Intent(this@EventListActivity, EventDetailActivity::class.java)
+ val listBean = it.data!!.list!![position]
+ intent.putExtra("createTime", listBean.createTime)
+ intent.putExtra(
+ "description",
+ listBean.description!!.filterString()
+ )
+ intent.putExtra("data", listBean.data)
+ intent.putExtra("images", listBean.images)
+ startActivity(intent)
+ }
+ })
+ }
+ }
+ })
+ viewModel.loadState.observe(this, Observer {
+ "未知异常,暂时无法查看清单".show(this)
+ })
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { this.finish() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
index 3d2eb8f..12c7c7e 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventQueryActivity.kt
@@ -7,7 +7,7 @@
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.adapter.EventSearchListAdapter
import com.casic.birmm.inspect.base.BaseViewModelActivity
import com.casic.birmm.inspect.extensions.filterString
import com.casic.birmm.inspect.extensions.show
@@ -40,7 +40,7 @@
private var isLoadMore = false
private var dataBeans: MutableList = ArrayList()
private lateinit var weakReferenceHandler: WeakReferenceHandler
- private lateinit var adapter: EventListAdapter
+ private lateinit var adapter: EventSearchListAdapter
override fun createViewModelByClass(): Class? =
EventQueryViewModel::class.java
@@ -157,12 +157,12 @@
} else {
resultActivity.emptyView!!.hide()
resultActivity.adapter =
- EventListAdapter(resultActivity, resultActivity.dataBeans)
+ EventSearchListAdapter(resultActivity, resultActivity.dataBeans)
resultActivity.eventRecyclerView!!.layoutManager =
LinearLayoutManager(resultActivity)
resultActivity.eventRecyclerView!!.adapter = resultActivity.adapter
resultActivity.adapter.setOnItemClickListener(object :
- EventListAdapter.OnItemClickListener {
+ EventSearchListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
val intent = Intent(resultActivity, EventDetailActivity::class.java)
val rowsBean = resultActivity.dataBeans[position]
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
index d805b9d..b9fe368 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectRouteActivity.kt
@@ -1,4 +1,156 @@
package com.casic.birmm.inspect.view
-class InspectRouteActivity {
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.lifecycle.ViewModelProvider
+import com.amap.api.maps2d.AMap
+import com.amap.api.maps2d.AMapOptions
+import com.amap.api.maps2d.CameraUpdateFactory
+import com.amap.api.maps2d.model.BitmapDescriptorFactory
+import com.amap.api.maps2d.model.LatLng
+import com.amap.api.maps2d.model.MarkerOptions
+import com.amap.api.maps2d.model.PolylineOptions
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.OtherUtils
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.InspectDetailViewModel
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.qmuiteam.qmui.util.QMUIStatusBarHelper
+import kotlinx.android.synthetic.main.activity_inspect_route.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.cancel
+
+class InspectRouteActivity : AppCompatActivity(), CoroutineScope by MainScope() {
+
+ private lateinit var aMap: AMap
+ private lateinit var id: String
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_inspect_route)
+ PageNavigationManager.addActivity(this)
+ setupTopBarLayout()
+ if (OtherUtils.isNetworkConnected(this)) {
+ initData(savedInstanceState)
+ initEvent()
+ } else {
+ "糟糕,没有接入任何网络~".show(this)
+ }
+ }
+
+ fun setupTopBarLayout() {
+ QMUIStatusBarHelper.translucent(this) //沉浸式状态栏
+ StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.mainThemeColor))
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ titleView.text = "巡检记录"
+ }
+
+ fun initData(savedInstanceState: Bundle?) {
+ mapView.onCreate(savedInstanceState)
+ aMap = mapView.map
+ val uiSettings = aMap.uiSettings
+ uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER
+
+ //根据id查询详情
+ id = intent.getStringExtra("id")!!
+ val detailViewModel = ViewModelProvider(this).get(InspectDetailViewModel::class.java)
+ detailViewModel.getInspectDetail(id)
+ detailViewModel.resultModel.observe(this, Observer {
+ val detailData = it.data!!
+ inspectNameView.text = detailData.name
+ userNameView.text = detailData.user
+ startTimeView.text = detailData.startTime
+ endTimeView.text = detailData.endTime
+ //移动到巡检起始经纬度
+ aMap.moveCamera(
+ CameraUpdateFactory.changeLatLng(
+ LatLng(
+ detailData.startLat,
+ detailData.startLng
+ )
+ )
+ )
+ aMap.moveCamera(CameraUpdateFactory.zoomTo(15.toFloat()))
+ //瞄点画线
+ val routeJson = detailData.routes!!
+ if (routeJson.isEmpty()) {
+ return@Observer
+ }
+ val pointArray = routeJson
+ .replace("[[", "")
+ .replace("]]", "")
+ .split("],[")
+ //设置起点
+ addMarker(LatLng(detailData.startLat, detailData.startLng), R.mipmap.qidian)
+ //设置终点
+ addMarker(LatLng(detailData.endLat, detailData.endLng), R.mipmap.zhongdian)
+ //
+ val taskViewModel = ViewModelProvider(this).get(TaskRecordViewModel::class.java)
+ taskViewModel.searchByInspection(id)
+ taskViewModel.resultModel.observe(this@InspectRouteActivity, Observer { taskModel ->
+ taskModel.data!!.list?.forEach { listBean ->
+ addMarker(LatLng(listBean.lat, listBean.lng), R.mipmap.jingshi)
+ }
+ })
+ taskViewModel.loadState.observe(this@InspectRouteActivity, Observer {
+ "抱歉,无法查询到相关记录".show(this@InspectRouteActivity)
+ })
+ //画线
+ val latLngPoints: ArrayList = ArrayList()
+ pointArray.forEach { point ->
+ val split = point.split(",")
+ latLngPoints.add(LatLng(split[1].toDouble(), split[0].toDouble()))
+ }
+ aMap.addPolyline(PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED))
+ })
+ detailViewModel.loadState.observe(this, Observer {
+ "抱歉,无法查询到相关记录".show(this)
+ })
+ }
+
+ fun initEvent() {
+ eventButton.setChangeAlphaWhenPress(true)
+ eventButton.setOnClickListener {
+ val intent = Intent(this, EventListActivity::class.java)
+ intent.putExtra("id", id)
+ startActivity(intent)
+ }
+ }
+
+ private fun addMarker(point: LatLng, res: Int) {
+ val markerOption = MarkerOptions()
+ markerOption.position(point)
+ markerOption.icon(BitmapDescriptorFactory.fromResource(res))
+ aMap.addMarker(markerOption)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ mapView.onResume()
+ }
+
+ override fun onPause() {
+ super.onPause()
+ mapView.onPause()
+ }
+
+ override fun onSaveInstanceState(outState: Bundle) {
+ super.onSaveInstanceState(outState)
+ mapView.onSaveInstanceState(outState)
+ }
+
+ override fun onDestroy() {
+ cancel()
+ super.onDestroy()
+ mapView.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
index d075b96..8ed4a0c 100644
--- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionQueryActivity.kt
@@ -1,5 +1,6 @@
package com.casic.birmm.inspect.view
+import android.content.Intent
import android.os.Handler
import android.os.Message
import androidx.core.content.ContextCompat
@@ -157,9 +158,10 @@
resultActivity.adapter.setOnItemClickListener(object :
InspectListAdapter.OnItemClickListener {
override fun onClick(position: Int) {
-// val intent = Intent(resultActivity, InspectRouteActivity::class.java)
-// intent.putExtra("id", resultActivity.dataBeans[position].id)
-// resultActivity.startActivity(intent)
+ val intent =
+ Intent(resultActivity, InspectRouteActivity::class.java)
+ intent.putExtra("id", resultActivity.dataBeans[position].id)
+ resultActivity.startActivity(intent)
}
})
}
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
new file mode 100644
index 0000000..64a6128
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/InspectDetailViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.InspectDetailModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class InspectDetailViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun getInspectDetail(id: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.getInspectDetail(id)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
new file mode 100644
index 0000000..986fe06
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/vm/TaskRecordViewModel.kt
@@ -0,0 +1,20 @@
+package com.casic.birmm.inspect.vm
+
+import androidx.lifecycle.MutableLiveData
+import com.casic.birmm.inspect.base.BaseViewModel
+import com.casic.birmm.inspect.extensions.launch
+import com.casic.birmm.inspect.model.TaskRecordModel
+import com.casic.birmm.inspect.utils.LoadState
+import com.casic.birmm.inspect.utils.retrofit.RetrofitServiceManager
+
+class TaskRecordViewModel : BaseViewModel() {
+ val resultModel = MutableLiveData()
+
+ fun searchByInspection(inspectionId: String) =
+ launch({
+ resultModel.value =
+ RetrofitServiceManager.searchByInspection(inspectionId)
+ }, {
+ loadState.value = LoadState.Fail
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_event_list.xml b/app/src/main/res/layout/activity_event_list.xml
new file mode 100644
index 0000000..c24752c
--- /dev/null
+++ b/app/src/main/res/layout/activity_event_list.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_inspect_route.xml b/app/src/main/res/layout/activity_inspect_route.xml
new file mode 100644
index 0000000..4af9b53
--- /dev/null
+++ b/app/src/main/res/layout/activity_inspect_route.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index bcae777..30b2e5e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -74,6 +74,7 @@
android:textColor="@color/white"
android:textSize="@dimen/titleFontSize"
app:qmui_backgroundColor="@color/mainThemeColor"
+ app:qmui_borderColor="@color/mainThemeColor"
app:qmui_radius="20dp" />
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/jingshi.png b/app/src/main/res/mipmap-xxhdpi/jingshi.png
new file mode 100644
index 0000000..f567df5
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/jingshi.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/qidian.png b/app/src/main/res/mipmap-xxhdpi/qidian.png
new file mode 100644
index 0000000..94290c6
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/qidian.png
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index bf4de11..6f072bf 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,10 @@
targetSdkVersion 30
versionCode 1
versionName "v2.0.0.0"
+ ndk {
+ //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
+ abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
+ }
}
buildTypes {
@@ -74,4 +78,7 @@
implementation 'com.github.bumptech.glide:glide:4.9.0'
//图片选择框架
implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.6.0'
+ //高德地图
+ implementation 'com.amap.api:map2d:6.0.0'
+ implementation 'com.amap.api:location:5.3.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0c3455d..7949d16 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,9 @@
+
+
+
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
index 7520133..f9da879 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventListAdapter.kt
@@ -8,15 +8,17 @@
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.casic.birmm.inspect.R
-import com.casic.birmm.inspect.model.EventModel
+import com.casic.birmm.inspect.model.TaskRecordModel
-
+/**
+ * 根据id获取事件列表
+ * */
class EventListAdapter(
context: Context,
- dataRows: MutableList
+ dataRows: List
) : RecyclerView.Adapter() {
- private val dataRows: MutableList? = dataRows
+ private val dataRows: List? = dataRows
private var layoutInflater: LayoutInflater? = null
init {
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
new file mode 100644
index 0000000..c98d39e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/EventSearchListAdapter.kt
@@ -0,0 +1,66 @@
+package com.casic.birmm.inspect.adapter
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.model.EventModel
+
+/**
+ * 事件查询
+ * */
+class EventSearchListAdapter(
+ context: Context,
+ dataRows: MutableList
+) : RecyclerView.Adapter() {
+
+ private val dataRows: MutableList? = dataRows
+ private var layoutInflater: LayoutInflater? = null
+
+ init {
+ layoutInflater = LayoutInflater.from(context)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
+ val view: View =
+ layoutInflater!!.inflate(R.layout.item_inspect_recycleview, parent, false)
+ return ItemViewHolder(view)
+ }
+
+ @SuppressLint("SetTextI18n")
+ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
+ //绑定数据
+ val rowsBean = dataRows?.get(position)!!
+ holder.inspectMessageView.text = rowsBean.name + " - " + rowsBean.type
+ holder.inspectDateView.text = rowsBean.createTime
+ holder.inspectNameView.text = rowsBean.user
+ //绑定事件
+ if (listener != null) {
+ holder.itemView.setOnClickListener {
+ listener!!.onClick(position)
+ }
+ }
+ }
+
+ override fun getItemCount(): Int = dataRows!!.size
+
+ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ var inspectMessageView: TextView = view.findViewById(R.id.inspectMessageView)
+ var inspectDateView: TextView = view.findViewById(R.id.inspectDateView)
+ var inspectNameView: TextView = view.findViewById(R.id.inspectNameView)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClick(position: Int)
+ }
+
+ fun setOnItemClickListener(onClickListener: OnItemClickListener?) {
+ listener = onClickListener
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
index 3efd655..aff92d4 100644
--- a/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/adapter/ImageRecycleViewAdapter.kt
@@ -18,13 +18,9 @@
return ItemViewHolder(view)
}
- override fun getItemCount(): Int {
- return images.size
- }
+ override fun getItemCount(): Int = images.size
- override fun getItemId(position: Int): Long {
- return position.toLong()
- }
+ override fun getItemId(position: Int): Long = position.toLong()
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
Glide.with(context)
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
new file mode 100644
index 0000000..c78353e
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/InspectDetailModel.kt
@@ -0,0 +1,35 @@
+package com.casic.birmm.inspect.model
+
+class InspectDetailModel {
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ /**
+ * date : 2021年07月08日
+ * endLat : 39.915908
+ * endLng : 116.26876
+ * endTime : 2021-07-08 11:20:20
+ * id : 162570318141612121
+ * name : 测试
+ * routes : [[116.2694615342882,39.913364800347225],[116.26944390190972,39.913723415798614],[116.2694420030382,39.91406846788195],[116.26944363064236,39.91439860026042],[116.268654,39.915826],[116.268759765625,39.91590766059028]]
+ * startLat : 39.913365
+ * startLng : 116.269462
+ * startTime : 2021-07-08 08:13:01
+ * user : 王晓颖
+ */
+ var date: String? = null
+ var endLat = 0.0
+ var endLng = 0.0
+ var endTime: String? = null
+ var id: String? = null
+ var name: String? = null
+ var routes: String? = null
+ var startLat = 0.0
+ var startLng = 0.0
+ var startTime: String? = null
+ var user: String? = null
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
new file mode 100644
index 0000000..ee6f1f6
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/model/TaskRecordModel.kt
@@ -0,0 +1,40 @@
+package com.casic.birmm.inspect.model
+
+class TaskRecordModel {
+
+ var code = 0
+ var data: DataBean? = null
+ var message: String? = null
+ var isSuccess = false
+
+ class DataBean {
+ var list: List? = null
+
+ class ListBean {
+ /**
+ * createTime : 2020-12-28 14:56:59
+ * data : -1
+ * description : ggg
+ * id : t1609138629320112121
+ * images : 2020-12/6528aeb21cff426c91c43a7f8b716d1e.jpg
+ * inspectionId : 1609138451543200022
+ * lat : 39.915956
+ * lng : 116.268596
+ * name : sss
+ * type : 自定义事件
+ * user : 超超级管理员
+ */
+ var createTime: String? = null
+ var data = 0
+ var description: String? = null
+ var id: String? = null
+ var images: String? = null
+ var inspectionId: String? = null
+ var lat = 0.0
+ var lng = 0.0
+ var name: String? = null
+ var type: String? = null
+ var user: String? = null
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
index c27772f..0ae38db 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/Constant.kt
@@ -6,7 +6,9 @@
object Constant {
val USER_PERMISSIONS = arrayOf(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
)
const val PERMISSIONS_CODE = 999
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
index ce426a3..36b219f 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt
@@ -4,7 +4,7 @@
import retrofit2.http.*
/**
- * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符?
+ * @JvmSuppressWildcards 用来注解类和方法,使得被标记元素的泛型参数不会被编译成通配符
* */
@JvmSuppressWildcards
interface RetrofitService {
@@ -61,4 +61,22 @@
@Query("limit") limit: Int,
@Query("offset") offset: Int
): EventModel
+
+ /**
+ * 获取巡检详情
+ */
+ @GET("/inspection/info")
+ suspend fun obtainInspectDetail(
+ @Header("token") token: String,
+ @Query("id") id: String
+ ): InspectDetailModel
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ @GET("/task/searchByInspection")
+ suspend fun searchByInspection(
+ @Header("token") token: String,
+ @Query("inspectionId") inspectionId: String
+ ): TaskRecordModel
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
index 673ce3d..23ed09d 100644
--- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
+++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt
@@ -74,4 +74,18 @@
pageIndex
)
}
+
+ /**
+ * 获取巡检详情
+ */
+ suspend fun getInspectDetail(id: String): InspectDetailModel {
+ return api.obtainInspectDetail(AuthenticationHelper.token!!, id)
+ }
+
+ /**
+ * 查询巡检记录对应的事件记录
+ */
+ suspend fun searchByInspection(inspectionId: String): TaskRecordModel {
+ return api.searchByInspection(AuthenticationHelper.token!!, inspectionId)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
new file mode 100644
index 0000000..7456901
--- /dev/null
+++ b/app/src/main/java/com/casic/birmm/inspect/view/EventListActivity.kt
@@ -0,0 +1,70 @@
+package com.casic.birmm.inspect.view
+
+import android.content.Intent
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.Observer
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.birmm.inspect.R
+import com.casic.birmm.inspect.adapter.EventListAdapter
+import com.casic.birmm.inspect.base.BaseViewModelActivity
+import com.casic.birmm.inspect.extensions.filterString
+import com.casic.birmm.inspect.extensions.show
+import com.casic.birmm.inspect.utils.PageNavigationManager
+import com.casic.birmm.inspect.utils.StatusBarColorUtil
+import com.casic.birmm.inspect.vm.TaskRecordViewModel
+import com.gyf.immersionbar.ImmersionBar
+import kotlinx.android.synthetic.main.activity_event_list.*
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class EventListActivity : BaseViewModelActivity() {
+ override fun createViewModelByClass(): Class