diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 7ec5243..1aee0a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,13 +4,15 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteDetailModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 现场作业ViewModel @@ -18,14 +20,15 @@ class WorkSiteViewModel : BaseViewModel() { private val gson = Gson() - val workingModel = MutableLiveData() + val worksiteModel = MutableLiveData() + val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { - workingModel.value = gson.fromJson( - response, object : TypeToken() {}.type + worksiteModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) @@ -33,4 +36,21 @@ }, { it.printStackTrace() }) + + fun obtainProjectDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.obtainProjectDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 7ec5243..1aee0a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,13 +4,15 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteDetailModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 现场作业ViewModel @@ -18,14 +20,15 @@ class WorkSiteViewModel : BaseViewModel() { private val gson = Gson() - val workingModel = MutableLiveData() + val worksiteModel = MutableLiveData() + val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { - workingModel.value = gson.fromJson( - response, object : TypeToken() {}.type + worksiteModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) @@ -33,4 +36,21 @@ }, { it.printStackTrace() }) + + fun obtainProjectDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.obtainProjectDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 7ec5243..1aee0a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,13 +4,15 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteDetailModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 现场作业ViewModel @@ -18,14 +20,15 @@ class WorkSiteViewModel : BaseViewModel() { private val gson = Gson() - val workingModel = MutableLiveData() + val worksiteModel = MutableLiveData() + val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { - workingModel.value = gson.fromJson( - response, object : TypeToken() {}.type + worksiteModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) @@ -33,4 +36,21 @@ }, { it.printStackTrace() }) + + fun obtainProjectDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.obtainProjectDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 019b44e..22edc63 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -87,6 +87,10 @@ implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航(带有地图,无需再依赖地图) implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0' + //高德地图搜索 + implementation 'com.amap.api:search:8.1.0' + //高德定位 + implementation 'com.amap.api:location:5.3.1' //CameraX def CameraX_version = '1.1.0' implementation "androidx.camera:camera-core:${CameraX_version}" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f5b198..902751b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -8,6 +8,8 @@ + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 7ec5243..1aee0a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,13 +4,15 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteDetailModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 现场作业ViewModel @@ -18,14 +20,15 @@ class WorkSiteViewModel : BaseViewModel() { private val gson = Gson() - val workingModel = MutableLiveData() + val worksiteModel = MutableLiveData() + val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { - workingModel.value = gson.fromJson( - response, object : TypeToken() {}.type + worksiteModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) @@ -33,4 +36,21 @@ }, { it.printStackTrace() }) + + fun obtainProjectDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.obtainProjectDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_permssion.xml b/app/src/main/res/layout/activity_permssion.xml index 1366064..e0f063b 100644 --- a/app/src/main/res/layout/activity_permssion.xml +++ b/app/src/main/res/layout/activity_permssion.xml @@ -122,6 +122,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -16,6 +18,10 @@ android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt index ff5ce37..6f8a036 100644 --- a/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt +++ b/app/src/main/java/com/casic/br/operationsite/adapter/WorkingListAdapter.kt @@ -9,12 +9,12 @@ import com.bumptech.glide.Glide import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.combineImagePath -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.qmuiteam.qmui.widget.QMUIRadiusImageView class WorkingListAdapter( private val context: Context, - private val dataRows: MutableList + private val dataRows: MutableList ) : RecyclerView.Adapter() { private val layoutInflater: LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt index bed87f0..eb90311 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/CompletedFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt index bf3295f..027b98e 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/NotStartFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -32,7 +32,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -81,7 +81,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt index 2117609..6464946 100644 --- a/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt +++ b/app/src/main/java/com/casic/br/operationsite/fragment/WorkingFragment.kt @@ -11,7 +11,7 @@ import com.casic.br.operationsite.adapter.WorkingListAdapter import com.casic.br.operationsite.extensions.showEmptyPage import com.casic.br.operationsite.model.BroadcastDataModel -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.utils.LocaleConstant import com.casic.br.operationsite.view.WorkSiteTabActivity import com.casic.br.operationsite.vm.WorkSiteViewModel @@ -33,7 +33,7 @@ private lateinit var workingListAdapter: WorkingListAdapter private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var broadcastManager: BroadcastManager - private var dataBeans: MutableList = ArrayList() + private var dataBeans: MutableList = ArrayList() private var pageIndex = 1 private var isRefresh = false private var isLoadMore = false @@ -82,7 +82,7 @@ obtainProjectListByPage() } - workSiteViewModel.workingModel.observe(this, { + workSiteViewModel.worksiteModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows when { diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java new file mode 100644 index 0000000..2359c3c --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteDetailModel.java @@ -0,0 +1,143 @@ +package com.casic.br.operationsite.model; + +public class WorkSiteDetailModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java new file mode 100644 index 0000000..e6aefc7 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteListModel.java @@ -0,0 +1,169 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +/** + * 施工现场列表数据模型 + */ +public class WorkSiteListModel { + + private int code; + private DataBean data; + private String message; + private boolean success; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public DataBean getData() { + return data; + } + + public void setData(DataBean data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public static class DataBean { + private List rows; + private int total; + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public static class RowsBean { + private String completedDate; + private String connectionPhone; + private String id; + private String imageUrl; + private String latitude; + private String longitude; + private String projectProgress; + private String updateTime; + private String workPerson; + private String workSiteDesc; + private String workTitle; + + public String getCompletedDate() { + return completedDate; + } + + public void setCompletedDate(String completedDate) { + this.completedDate = completedDate; + } + + public String getConnectionPhone() { + return connectionPhone; + } + + public void setConnectionPhone(String connectionPhone) { + this.connectionPhone = connectionPhone; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getImageUrl() { + return imageUrl; + } + + public void setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + } + + public String getLatitude() { + return latitude; + } + + public void setLatitude(String latitude) { + this.latitude = latitude; + } + + public String getLongitude() { + return longitude; + } + + public void setLongitude(String longitude) { + this.longitude = longitude; + } + + public String getProjectProgress() { + return projectProgress; + } + + public void setProjectProgress(String projectProgress) { + this.projectProgress = projectProgress; + } + + public String getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public String getWorkSiteDesc() { + return workSiteDesc; + } + + public void setWorkSiteDesc(String workSiteDesc) { + this.workSiteDesc = workSiteDesc; + } + + public String getWorkTitle() { + return workTitle; + } + + public void setWorkTitle(String workTitle) { + this.workTitle = workTitle; + } + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java deleted file mode 100644 index b7954ca..0000000 --- a/app/src/main/java/com/casic/br/operationsite/model/WorkingListModel.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.casic.br.operationsite.model; - -import java.util.List; - -public class WorkingListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private String connectionPhone; - private String id; - private String imageUrl; - private String updateTime; - private String workPerson; - private String workSiteDesc; - private String workTitle; - - public String getConnectionPhone() { - return connectionPhone; - } - - public void setConnectionPhone(String connectionPhone) { - this.connectionPhone = connectionPhone; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(String updateTime) { - this.updateTime = updateTime; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public String getWorkSiteDesc() { - return workSiteDesc; - } - - public void setWorkSiteDesc(String workSiteDesc) { - this.workSiteDesc = workSiteDesc; - } - - public String getWorkTitle() { - return workTitle; - } - - public void setWorkTitle(String workTitle) { - this.workTitle = workTitle; - } - } - } -} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index e489c55..c7890de 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -44,6 +44,15 @@ ): String /** + * 施工现场详情 + */ + @GET("/site/detail") + suspend fun obtainProjectDetail( + @Header("token") token: String, + @Query("id") id: String + ): String + + /** * 报警列表 */ @GET("/alarm/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 3ba3359..3a6f684 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -49,6 +49,13 @@ } /** + * 施工现场详情 + */ + suspend fun obtainProjectDetail(id: String): String { + return api.obtainProjectDetail(AuthenticationHelper.token!!, id) + } + + /** * 报警列表 */ suspend fun obtainAlarmListByPage(page: Int): String { diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt index 00802a0..12d2275 100644 --- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt @@ -7,7 +7,11 @@ val USER_PERMISSIONS = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.READ_PHONE_STATE ) const val SERVER_BASE_URL = "http://192.168.43.66:8083" diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5411dbd..b1daa34 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,27 +1,38 @@ package com.casic.br.operationsite.view import android.os.Bundle +import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.* +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.operationsite.R +import com.casic.br.operationsite.utils.DialogHelper +import com.casic.br.operationsite.vm.WorkSiteViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.vm.LoadState +import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* -class WorkSiteTabActivity : KotlinBaseActivity(), AMap.OnMapLoadedListener { +class WorkSiteTabActivity : KotlinBaseActivity() { + private val kTag = "WorkSiteTabActivity" private lateinit var aMap: AMap + private lateinit var workSiteViewModel: WorkSiteViewModel + private val geocoderSearch by lazy { GeocodeSearch(this) } private var latLng: LatLng? = null override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -37,7 +48,9 @@ override fun initData() { val id = intent.getStringExtra(Constant.INTENT_PARAM)!! - + /** + * 地图初始化设置 + * */ aMap = mapView.map aMap.mapType = AMap.MAP_TYPE_NORMAL val uiSettings = aMap.uiSettings @@ -46,40 +59,99 @@ uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 uiSettings.isRotateGesturesEnabled = false//不允许地图旋转 - //地图加载成功之后调用 - aMap.addOnMapLoadedListener(this) - } - - override fun onMapLoaded() { - if (latLng == null) { - "经纬度异常,无法在地图显示".show(this) - return - } /** - * 参数1---要移动到的经纬度 - * 参数2---地图的放缩级别zoom - * 参数3---地图倾斜度 - * 参数4---地图的旋转角度 + * 数据初始化 * */ - val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) - val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { - override fun onFinish() { - //添加Marker - val markerOptions = MarkerOptions() - .position(latLng) - .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) - .draggable(true) - aMap.addMarker(markerOptions) + workSiteViewModel = ViewModelProvider(this).get(WorkSiteViewModel::class.java) + workSiteViewModel.obtainProjectDetail(id) + workSiteViewModel.detailModel.observe(this, { + if (it.code == 200) { + val detailData = it.data + projectNameView.text = detailData.workTitle + principalView.text = String.format("现场负责人:${detailData.workPerson}") + phoneNumberView.text = String.format("联系电话:${detailData.connectionPhone}") + completedDateView.text = String.format("竣工日期:${detailData.completedDate}") + projectProgressView.text = "工程进度:${detailData.projectProgress}%" + + this.latLng = LatLng( + detailData.latitude.toDouble(), detailData.longitude.toDouble() + ) + val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) + val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { + override fun onFinish() { + //添加Marker + val markerOptions = MarkerOptions() + .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) + .draggable(true) + aMap.addMarker(markerOptions) + } + + override fun onCancel() { + + } + }) + + val queryParam = RegeocodeQuery( + LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = String.format( + "地址:${result?.regeocodeAddress?.formatAddress}" + ) + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) } + }) - override fun onCancel() { - + workSiteViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> { + DialogHelper.showLoadingDialog(this, "数据加载中,请稍后...") + } + else -> { + DialogHelper.dismissLoadingDialog() + } } }) } override fun initEvent() { + navigationView.setOnClickListener { + if (latLng == null) { + "经纬度异常,无法开启导航".show(this) + return@setOnClickListener + } + AlertControlDialog.Builder() + .setContext(this) + .setTitle("提示") + .setMessage("确定要前往吗") + .setNegativeButton("取消") + .setPositiveButton("确定") + .setOnDialogButtonClickListener(object : + AlertControlDialog.OnDialogButtonClickListener { + override fun onConfirmClick() { + Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) + } + + override fun onCancelClick() { + + } + }).build().show() + } + alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt index 7ec5243..1aee0a3 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/WorkSiteViewModel.kt @@ -4,13 +4,15 @@ import com.casic.br.operationsite.base.BaseApplication import com.casic.br.operationsite.extensions.separateResponseCode import com.casic.br.operationsite.extensions.toErrorMessage -import com.casic.br.operationsite.model.WorkingListModel +import com.casic.br.operationsite.model.WorkSiteDetailModel +import com.casic.br.operationsite.model.WorkSiteListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.launch import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState /** * 现场作业ViewModel @@ -18,14 +20,15 @@ class WorkSiteViewModel : BaseViewModel() { private val gson = Gson() - val workingModel = MutableLiveData() + val worksiteModel = MutableLiveData() + val detailModel = MutableLiveData() fun obtainProjectListByPage(keywords: String, state: String, page: Int) = launch({ val response = RetrofitServiceManager.obtainProjectListByPage(keywords, state, page) val responseCode = response.separateResponseCode() if (responseCode == 200) { - workingModel.value = gson.fromJson( - response, object : TypeToken() {}.type + worksiteModel.value = gson.fromJson( + response, object : TypeToken() {}.type ) } else { response.toErrorMessage().show(BaseApplication.obtainInstance()) @@ -33,4 +36,21 @@ }, { it.printStackTrace() }) + + fun obtainProjectDetail(id: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.obtainProjectDetail(id) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + detailModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml new file mode 100644 index 0000000..831c4c4 --- /dev/null +++ b/app/src/main/res/drawable/ic_device.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..52e376f --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_permssion.xml b/app/src/main/res/layout/activity_permssion.xml index 1366064..e0f063b 100644 --- a/app/src/main/res/layout/activity_permssion.xml +++ b/app/src/main/res/layout/activity_permssion.xml @@ -122,6 +122,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -71,19 +68,19 @@ android:id="@+id/principalView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="负责人:张三" /> + android:text="负责人:" /> + android:text="电话:" /> + android:text="竣工日期:" /> + android:text="工程进度:" /> @@ -149,7 +146,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:text="地址:深圳市南山区前海自贸区XX路XX号" + android:text="地址:" android:textSize="@dimen/sp_14" />