diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_phone.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_phone.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml deleted file mode 100644 index 898c1cf..0000000 --- a/app/src/main/res/drawable/ic_storage.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index a91d91f..f53f7e1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,12 +19,10 @@ applicationId "com.casic.app.smartwell" minSdkVersion 23 targetSdkVersion 31 - versionCode 5 - versionName "1.0.5" + versionCode 1 + versionName "1.0.0" - manifestPlaceholders = [ - GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4" - ] + manifestPlaceholders = [GETUI_APPID: "HKv8K9qARd6WckZ1o2Vbu4"] } buildTypes { @@ -33,9 +31,7 @@ signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - ndk { - abiFilters "arm64-v8a", "armeabi-v7a" - } + ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8" } } } @@ -80,12 +76,12 @@ //fragment快速实现 implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -100,7 +96,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //高德导航 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index bd136e7..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index cb2ff8f..313af78 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -14,12 +14,15 @@ import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.extensions.valueToType import com.casic.app.smartwell.model.MapWellListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity @@ -28,6 +31,7 @@ import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel +import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.pengxh.kt.lite.extensions.dp2px import com.pengxh.kt.lite.extensions.navigatePageTo @@ -108,7 +112,7 @@ //获取所有窨井数据 httpCountDownTimer.start() - DialogHelper.showLoadingDialog(requireActivity(), "数据加载中,请稍后...") + LoadingDialogHub.show(requireActivity(), "数据加载中,请稍后...") //获取所有窨井数据 wellListViewModel.obtainAllWell() wellListViewModel.totalWellModel.observe(viewLifecycleOwner, { @@ -238,7 +242,7 @@ private val httpCountDownTimer = object : CountDownTimer(15 * 1000, 1000) { override fun onFinish() { "请求服务器超时,请退出后重试".show(requireContext()) - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() } override fun onTick(millisUntilFinished: Long) { @@ -249,7 +253,7 @@ //获取视野内的marker 根据聚合算法合成自定义的marker 显示视野内的marker override fun onCameraChangeFinish(p0: CameraPosition?) { //地图缩放之后显示聚合点数据 - DialogHelper.dismissLoadingDialog() + LoadingDialogHub.dismiss() httpCountDownTimer.cancel() initClustersMarkers() } @@ -264,57 +268,46 @@ screenLocation = proj.toScreenLocation(it.position) if (screenLocation.x >= 0 && screenLocation.y >= 0 && screenLocation.x <= dm.widthPixels && screenLocation.y <= dm.heightPixels) { //在当前可观区域内 - /** - * TODO 如果需要地图聚合效果,去掉下一行并放开下面的注释 - * */ - it.icon(BitmapDescriptorFactory.fromBitmap(BitmapDescriptorFactory.fromResource(R.mipmap.well_location).bitmap)) markerOptionsInView.add(it) } } // 自定义的聚合类MarkerCluster -// val clustersMarkers: MutableList = ArrayList() -// markerOptionsInView.forEach { -// if (clustersMarkers.size == 0) { -// //添加一个新的自定义marker -// clustersMarkers.add( -// GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) -// ) -// } else { -// var isInRange = false -// //Kotlin foreach不能用break -// for (view in clustersMarkers) { -// //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 -// if (view.bounds.contains(it.position)) { -// view.addMarker(it) -// isInRange = true -// break -// } -// } -// //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 -// if (!isInRange) { -// clustersMarkers.add( -// GaoDeClusterMarkerView( -// requireContext(), it, proj, LocaleConstant.RADIUS_SIZE -// ) -// )//相距多少才聚合 -// } -// } -// } -// // 设置聚合点的位置和icon -// clustersMarkers.forEach { -// it.setPositionAndIcon() -// } -// aMap.clear() -// // 重新添加 marker -// clustersMarkers.forEach { -// aMap.addMarker(it.options) -// } - - /** - * TODO 如果需要地图聚合效果,去掉下面的 - * */ + val clustersMarkers: MutableList = ArrayList() markerOptionsInView.forEach { - aMap.addMarker(it) + if (clustersMarkers.size == 0) { + //添加一个新的自定义marker + clustersMarkers.add( + GaoDeClusterMarkerView(requireContext(), it, proj, LocaleConstant.RADIUS_SIZE) + ) + } else { + var isInRange = false + //Kotlin foreach不能用break + for (view in clustersMarkers) { + //判断当前的marker是否在前面marker的聚合范围内 并且每个marker只会聚合一次。 + if (view.bounds.contains(it.position)) { + view.addMarker(it) + isInRange = true + break + } + } + //如果没在任何范围内,自己单独形成一个自定义marker。在和后面的marker进行比较 + if (!isInRange) { + clustersMarkers.add( + GaoDeClusterMarkerView( + requireContext(), it, proj, LocaleConstant.RADIUS_SIZE + ) + )//相距多少才聚合 + } + } + } + // 设置聚合点的位置和icon + clustersMarkers.forEach { + it.setPositionAndIcon() + } + aMap.clear() + // 重新添加 marker + clustersMarkers.forEach { + aMap.addMarker(it.options) } } diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt index 466cdd6..f12c575 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/MinePageFragment.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.BuildConfig import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.appendDownloadUrl -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.view.AboutUsActivity import com.casic.app.smartwell.view.HelpCenterActivity @@ -55,6 +55,15 @@ noticeSwitch.isChecked = SaveKeyValues.getValue("noticeSwitchStatus", true) as Boolean } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { userDetailLayout.setOnClickListener { requireContext().navigatePageTo() @@ -102,16 +111,6 @@ }).build().show() } }) - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "检查版本中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) userViewModel.userDetailModel.observe(this, { if (it.code == 200) { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt index ea5d231..43029f0 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/NoticePageFragment.kt @@ -11,8 +11,10 @@ import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.view.WellDetailActivity +import com.casic.app.smartwell.view.OrderNotConfirmedDetailActivity +import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.DeviceViewModel +import com.casic.app.smartwell.vm.WorkOrderViewModel import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -31,6 +33,7 @@ private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var noticeDataAdapter: NoticeDataAdapter private lateinit var deviceViewModel: DeviceViewModel + private lateinit var workOrderViewModel: WorkOrderViewModel private var dataBeans: MutableList = ArrayList() private var pageIndex = 0 // 本地数据库分页从0开始 private var isRefresh = false @@ -54,6 +57,7 @@ } weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } override fun onResume() { @@ -63,6 +67,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { noticeLayout.setOnRefreshListener { isRefresh = true @@ -102,14 +110,32 @@ }.start() } - deviceViewModel.detailModel.observe(this, { +// deviceViewModel.detailModel.observe(this, { +// if (it.code == 200) { +// if (it.data.rows.size > 0) { +// val rowsBean = it.data.rows[0] +// requireContext().navigatePageTo(rowsBean.wellId) +// } else { +// "无法查询到设备所在井信息".show(requireContext()) +// } +// } +// }) + + workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { - if (it.data.rows.size > 0) { - val rowsBean = it.data.rows[0] - requireContext().navigatePageTo(rowsBean.wellId) - } else { - "无法查询到设备所在井信息".show(requireContext()) + val orderDetail = it.data!![0] + val jobId = orderDetail.jobId.toString() + if (jobId.isBlank()) { + "工单编号异常,无法查看详情".show(requireContext()) + return@observe } + if (orderDetail.jobStatus == "0") { + requireContext().navigatePageTo(jobId) + } else { + requireContext().navigatePageTo(jobId) + } + } else { + "无法查询到工单详情".show(requireContext()) } }) } @@ -142,13 +168,20 @@ } override fun onShowMoreClicked(position: Int) { - deviceViewModel.obtainDeviceDetail(dataBeans[position].deviceCode) + val noticeBean = dataBeans[position] + //工单和告警都是deviceCode,值不一样 +// if (noticeBean.title.contains("工单")) { +// workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) +// } else { +// deviceViewModel.obtainDeviceDetail(noticeBean.deviceCode) +// } + //TODO 暂时不查设备 + workOrderViewModel.obtainWorkOrderDetail(noticeBean.deviceCode) //更改数据库里通知状态 DataBaseManager.instance.updateNoticeByMessageId(dataBeans[position].messageId) noticeDataAdapter.notifyItemChanged(position) noticeDataAdapter.notifyItemRangeChanged( - position, - dataBeans.size - position + position, dataBeans.size - position ) } }) diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt index b876865..68a1502 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderCompletedFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { completedOrderLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt index e6c7951..74204c6 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderInHandleFragment.kt @@ -47,6 +47,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { inHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt index 884dc51..47e735c 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderListFragment.kt @@ -39,6 +39,10 @@ workOrderTabLayout.setupWithViewPager(workOrderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { requireContext().navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt index a3f435d..0899aa4 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -43,6 +43,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt index 75465ee..e707f9f 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OrderNotProcessedFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -50,6 +50,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -88,27 +107,6 @@ weakReferenceHandler.sendEmptyMessage(2022032901) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt index 3981224..9983243 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotAcceptFragment.kt @@ -7,7 +7,7 @@ import com.casic.app.smartwell.adapter.OrderNotProcessedAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.OrderListModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.view.OrderNotProcessedDetailActivity import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WorkOrderListViewModel @@ -52,6 +52,25 @@ super.onResume() } + override fun observeRequestState() { + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + notProcessedAdapter.notifyItemRemoved(clickedPosition) + notProcessedAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,27 +109,6 @@ weakReferenceHandler.sendEmptyMessage(2022040601) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - notProcessedAdapter.notifyItemRemoved(clickedPosition) - notProcessedAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt index a328ccd..6451558 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/OvertimeNotHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt index 88a01bb..7f40713 100644 --- a/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt +++ b/app/src/main/java/com/casic/app/smartwell/service/SmartWellIntentService.kt @@ -1,10 +1,12 @@ package com.casic.app.smartwell.service import android.content.Context +import android.os.Message import android.util.Log import com.casic.app.smartwell.model.UserDetailModel import com.casic.app.smartwell.utils.DataBaseManager import com.casic.app.smartwell.utils.LocaleConstant +import com.casic.app.smartwell.view.MainActivity import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.igexin.sdk.GTIntentService @@ -30,7 +32,12 @@ // 接收 cid override fun onReceiveClientId(context: Context?, clientid: String?) { - Log.d(kTag, "onReceiveClientId -> clientid = $clientid") + Log.d(kTag, "onReceiveClientId -> $clientid") + //通知MainActivity注册个推服务 + val msg: Message = MainActivity.weakReferenceHandler.obtainMessage() + msg.what = LocaleConstant.PUSH_REGISTER + msg.obj = clientid + MainActivity.weakReferenceHandler.sendMessage(msg) } // cid 离线上线通知 @@ -45,13 +52,24 @@ // 通知到达 override fun onNotificationMessageArrived(context: Context?, msg: GTNotificationMessage?) { + //报警 // { -// "content": "设备编号412019010210发生井盖开盖报警", -// "messageId": "3b45d3dbc2d64b958bc5c702eea13769", -// "taskId": "TEST_0704_1e04163d440384f8d9968b32a0857abf", -// "title": "新消息来了", +// "content": "设备编号[412022030361]发生井盖开盖报警", +// "messageId": "380abf9a79d34306a2683dc9bf96ee78", +// "taskId": "OSL-0830_4hmfimp3Vu684wo3SjXso9", +// "title": "告警提醒", // "appid": "HKv8K9qARd6WckZ1o2Vbu4", -// "clientId": "cea3a200851c7b8e6a7f8244b5362bf4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", +// "pkgName": "com.casic.app.smartwell" +// } + //工单 +// { +// "content": "您有一条编号为[758695822]的工单未处理,请及时处理", +// "messageId": "42d5bb5ddcf24383abc31f26d266505b", +// "taskId": "OSL-0831_QtysyQ96RG8388uCm6ZgS9", +// "title": "工单提醒", +// "appid": "HKv8K9qARd6WckZ1o2Vbu4", +// "clientId": "e78beacc42e9a02ae6fb9087eb2b1171", // "pkgName": "com.casic.app.smartwell" // } if (msg == null) { @@ -66,12 +84,16 @@ ) userId = userDataModel.id.toString() } - val deviceCode = msg.content.substring(4, 16) - DataBaseManager.instance.insertNotice( - msg.messageId, msg.appid, msg.clientId, msg.taskId, - userId, msg.title, msg.content, deviceCode, "0", - System.currentTimeMillis().timestampToCompleteDate() - ) + //解析编号 + val splitArray = msg.content.split("\\[|\\]".toRegex()) + //TODO 暂时去掉设备报警,只要工单 + if (msg.title.contains("工单")) { + DataBaseManager.instance.insertNotice( + msg.messageId, msg.appid, msg.clientId, msg.taskId, + userId, msg.title, msg.content, splitArray[1], "0", + System.currentTimeMillis().timestampToCompleteDate() + ) + } } // 通知点击 diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt deleted file mode 100644 index 422e4ed..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogHelper.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -//TODO 改为单例模式 -object DialogHelper { - private lateinit var loadingDialog: QMUITipDialog - - fun showLoadingDialog(activity: Activity, message: String?) { - loadingDialog = QMUITipDialog.Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt deleted file mode 100644 index 0041187..0000000 --- a/app/src/main/java/com/casic/app/smartwell/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.app.smartwell.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..77a14a6 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.app.smartwell.utils; + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} diff --git a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt index ca726a0..5005bc9 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/LocaleConstant.kt @@ -15,14 +15,15 @@ ) const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L - const val RADIUS_SIZE = 100 //相距多少米才聚合,单位:米 + const val RADIUS_SIZE = 10 //相距多少米才聚合,单位:米 const val PERMISSIONS_CODE = 999 const val PAGE_LIMIT = 20 + const val PUSH_REGISTER = 2022082901 const val ACCOUNT = "account" const val PASSWORD = "password" const val DEFAULT_SERVER_CONFIG = "defaultServerConfig" - const val DEFAULT_SERVER = "http://60.208.121.150:5001" + const val DEFAULT_SERVER = "http://111.198.10.15:11308" const val USER_DETAIL_MODEL = "userDetailModel" const val APP_AUTHORITY = "com.casic.app.smartwell.fileprovider" diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt index 809dabc..051bfb8 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitService.kt @@ -299,6 +299,7 @@ suspend fun obtainVersionResult(@Header("token") token: String): String /** + * TODO 接口有点不对 * 获取设备详情 */ @GET("/device/list") @@ -306,4 +307,14 @@ @Header("token") token: String, @Query("deviceCode") deviceCode: String ): String + + /** + * 个推推送cid注册 + */ + @FormUrlEncoded + @POST("/app/registerGeTui") + suspend fun registerPush( + @Header("token") token: String, + @Field("clientid") deviceCode: String + ): String } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt index 7b97419..55da138 100644 --- a/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/app/smartwell/utils/retrofit/RetrofitServiceManager.kt @@ -246,4 +246,11 @@ suspend fun obtainDeviceDetail(deviceCode: String): String { return api.obtainDeviceDetail(AuthenticationHelper.token!!, deviceCode) } + + /** + * 个推推送cid注册 + */ + suspend fun registerPush(clientId: String): String { + return api.registerPush(AuthenticationHelper.token!!, clientId) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt index 4fab0ba..2e2848c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/AboutUsActivity.kt @@ -26,6 +26,10 @@ versionCodeView.text = String.format("版本信息:V${BuildConfig.VERSION_NAME}") } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt index a30c835..34a6b49 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/BigImageActivity.kt @@ -30,6 +30,10 @@ } + override fun observeRequestState() { + + } + override fun initEvent() { val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0) val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY) diff --git a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt index 44ed44e..9e5cdd9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/ChangePasswordActivity.kt @@ -37,6 +37,21 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + userViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "修改中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + AuthenticationHelper.removeToken() + this.navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { submitButton.setOnClickListener { /** @@ -82,21 +97,5 @@ ) userViewModel.changePassword(oldPwd = oldPassKey, newPwd = newPassKey) } - userViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - this.navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt index d77b873..e531d6c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/HelpCenterActivity.kt @@ -29,6 +29,10 @@ answerView.webViewClient = WebViewClient() } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c886d0e..3429375 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -20,7 +20,6 @@ class LoginActivity : KotlinBaseActivity() { private val context: Context = this@LoginActivity - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -35,12 +34,21 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) - dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + authenticateViewModel.loadState.observe(this, { + LoadingDialogHub.show(this, "登录中,请稍后") + }) + + loginViewModel.loadState.observe(this, { + LoadingDialogHub.dismiss() + }) + } + override fun initEvent() { //修改IP和端口 changeServerLayout.setOnClickListener { @@ -111,13 +119,7 @@ finish() } }) - loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() - }) } }) - authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt index fd8df9e..50581da 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/MainActivity.kt @@ -1,8 +1,10 @@ package com.casic.app.smartwell.view +import android.util.Log import android.view.KeyEvent import android.view.MenuItem import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider import androidx.viewpager.widget.ViewPager import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.ViewPagerAdapter @@ -10,19 +12,28 @@ import com.casic.app.smartwell.fragment.MinePageFragment import com.casic.app.smartwell.fragment.NoticePageFragment import com.casic.app.smartwell.fragment.OrderListFragment +import com.casic.app.smartwell.vm.PushViewModel import com.gyf.immersionbar.ImmersionBar import com.igexin.sdk.PushManager import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil +import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_main.* class MainActivity : KotlinBaseActivity() { + companion object { + lateinit var weakReferenceHandler: WeakReferenceHandler + } + + private val kTag = "MainActivity" private var menuItem: MenuItem? = null private var fragmentPages: ArrayList = ArrayList() private var clickTime: Long = 0 + private lateinit var pushViewModel: PushViewModel init { fragmentPages.add(HomePageFragment()) @@ -41,6 +52,20 @@ override fun initData() { //推送,多次调用 SDK 初始化并无影响。 PushManager.getInstance().initialize(this) + pushViewModel = ViewModelProvider(this).get(PushViewModel::class.java) + weakReferenceHandler = WeakReferenceHandler { + pushViewModel.registerPush(it.obj as String) + true + } + pushViewModel.registerResultModel.observe(this, { + if (it.code == 200) { + Log.d(kTag, "推送注册结果: ${it.toJson()}") + } + }) + } + + override fun observeRequestState() { + } override fun initEvent() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt index f6ff845..ff4017e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderCompletedDetailActivity.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.* -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WorkOrderViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -23,6 +23,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private val context: Context = this@OrderCompletedDetailActivity @@ -38,13 +39,21 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! - + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(id = jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -139,17 +148,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt index 08a0722..0b33cb3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderInHandleDetailActivity.kt @@ -43,6 +43,7 @@ class OrderInHandleDetailActivity : KotlinBaseActivity() { private val kTag = "OrderInHandleDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!!//初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -74,8 +75,46 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +140,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -298,18 +338,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -343,48 +371,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt index 376a1f0..5558f37 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -42,6 +42,7 @@ class OrderNotConfirmedDetailActivity : KotlinBaseActivity() { private val kTag = "OrderNotConfirmedDetailActivity" + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var uploadImageViewModel: UploadImageViewModel private lateinit var userViewModel: UserViewModel @@ -65,7 +66,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -75,8 +76,47 @@ uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "图片上传中,请稍后...") + else -> LoadingDialogHub.dismiss() + } + }) + + //转单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "转单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -101,6 +141,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -258,18 +299,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -303,48 +332,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //转单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "转单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index c19928a..5a1bab3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -26,6 +26,7 @@ class OrderNotProcessedDetailActivity : KotlinBaseActivity() { + private lateinit var jobId: String private lateinit var workOrderViewModel: WorkOrderViewModel private lateinit var wellViewModel: WellViewModel private lateinit var operationViewModel: OperationViewModel @@ -43,7 +44,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(Constant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) @@ -51,6 +52,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + this.finish() + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -143,33 +166,5 @@ }) } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt index 97b7a7a..0c35edc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OvertimeOrderActivity.kt @@ -46,6 +46,10 @@ overTimeTabLayout.setupWithViewPager(overTimeViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt index 3ad3fa6..8cfe65c 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/PermissionActivity.kt @@ -1,46 +1,36 @@ package com.casic.app.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.LocaleConstant 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.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +/** + * 去掉授权页面,直接申请权限 + * */ +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取存储相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取存储相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt index 64920f7..71393f3 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchOrderActivity.kt @@ -59,6 +59,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { alarmViewModel.obtainAlarmContentType("1") alarmViewModel.listModel.observe(this, { @@ -71,12 +75,7 @@ bean.deviceType = "" contentModels.add(bean) it.data!!.list?.forEach { contentTypeBean -> - /** - * TODO 章丘项目没有如下报警,别的项目需要改回来 - * */ - if (contentTypeBean.name != "井盖开盖报警" && contentTypeBean.name != "浓度超限") { - contentModels.add(contentTypeBean) - } + contentModels.add(contentTypeBean) } contentTypeAdapter = object : TagAdapter(contentModels) { @@ -101,11 +100,8 @@ } }) - /** - * TODO 章丘项目只有一/二级报警,别的项目需要改回来 - * */ val levelMaps: MutableList> = ArrayList() - for (i in 0..2) { + for (i in 0..3) { val map = HashMap() map["name"] = i.toString().toChinese() map["value"] = i.toLevel() diff --git a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt index 6ba3c38..bc18b26 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SearchResultActivity.kt @@ -9,7 +9,7 @@ import com.casic.app.smartwell.adapter.SearchResultAdapter import com.casic.app.smartwell.extensions.showEmptyPage import com.casic.app.smartwell.model.SearchResultModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.LocaleConstant import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.SearchOrderViewModel @@ -63,11 +63,35 @@ searchOrderViewModel = ViewModelProvider(this).get(SearchOrderViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "接单中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + //接单成功之后刷新列表 + dataBeans.removeAt(clickedPosition) + searchResultAdapter.notifyItemRemoved(clickedPosition) + searchResultAdapter.notifyItemRangeChanged( + clickedPosition, dataBeans.size - clickedPosition + ) + } + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + obtainSearchResult() searchOrderViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -93,16 +117,7 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - searchOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) + resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -115,27 +130,6 @@ obtainSearchResult() } - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新列表 - dataBeans.removeAt(clickedPosition) - searchResultAdapter.notifyItemRemoved(clickedPosition) - searchResultAdapter.notifyItemRangeChanged( - clickedPosition, dataBeans.size - clickedPosition - ) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] diff --git a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt index b0b8ecf..f53ee53 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/SplashScreenActivity.kt @@ -42,6 +42,10 @@ userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { countDownTimer.start() } diff --git a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt index c3add8d..ba47ddd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/UserDetailActivity.kt @@ -53,6 +53,10 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { changePwdLayout.setOnClickListener { this.navigatePageTo() diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 816205d..802d9dc 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -6,7 +6,7 @@ import com.amap.api.maps.model.LatLng import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar @@ -50,6 +50,15 @@ } } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { wellViewModel.wellDetailModel.observe(this, { if (it.code == 200) { @@ -127,15 +136,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 8f890f9..6987ed1 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -56,12 +56,14 @@ wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) weakReferenceHandler = WeakReferenceHandler(callback) + } - wellViewModel.obtainWellType() - obtainWellList() + override fun observeRequestState() { + } override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -80,6 +82,7 @@ } }) + obtainWellList() wellListViewModel.listModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt index c16b023..043ccf4 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellMonitorActivity.kt @@ -6,7 +6,7 @@ import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.SensorListAdapter import com.casic.app.smartwell.extensions.showEmptyPage -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity @@ -20,8 +20,8 @@ class WellMonitorActivity : KotlinBaseActivity() { - private lateinit var wellViewModel: WellViewModel private lateinit var wellId: String + private lateinit var wellViewModel: WellViewModel override fun initLayoutView(): Int = R.layout.activity_well_monitor @@ -35,13 +35,21 @@ } override fun initData() { - wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! + this.wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) + } - wellViewModel.obtainMonitorResult(wellId) + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中,请稍后") + else -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { + wellViewModel.obtainMonitorResult(wellId) wellViewModel.monitorModel.observe(this, { if (it.code == 200) { if (it.data?.size == 0) { @@ -56,15 +64,5 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 39a02e6..6b7d0dd 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -10,7 +10,7 @@ import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel -import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.LoadingDialogHub import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel @@ -59,8 +59,6 @@ weakReferenceHandler = WeakReferenceHandler(callback) wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) wellListViewModel = ViewModelProvider(this).get(WellListViewModel::class.java) - - wellViewModel.obtainWellType() } override fun onResume() { @@ -68,7 +66,21 @@ super.onResume() } + override fun observeRequestState() { + wellViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + is LoadState.Success -> { + LoadingDialogHub.dismiss() + wellOperationAdapter.notifyItemChanged(clickedPosition) + } + else -> LoadingDialogHub.dismiss() + } + }) + } + override fun initEvent() { + wellViewModel.obtainWellType() wellViewModel.wellTypeModel.observe(this, { if (it.code == 200) { it.data!!.forEachIndexed { index, dataBean -> @@ -127,20 +139,6 @@ } } }) - wellViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - wellOperationAdapter.notifyItemChanged(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) wellTypeLayout.setOnClickListener { arrowImageView.arrowAnimation(180f) diff --git a/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt new file mode 100644 index 0000000..48d254b --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/vm/PushViewModel.kt @@ -0,0 +1,32 @@ +package com.casic.app.smartwell.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.app.smartwell.base.BaseApplication +import com.casic.app.smartwell.extensions.separateResponseCode +import com.casic.app.smartwell.extensions.toErrorMessage +import com.casic.app.smartwell.model.CommonResultModel +import com.casic.app.smartwell.utils.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 + +class PushViewModel : BaseViewModel() { + private val gson = Gson() + val registerResultModel = MutableLiveData() + + fun registerPush(clientId: String) = launch({ + val response = RetrofitServiceManager.registerPush(clientId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + registerResultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + response.toErrorMessage().show(BaseApplication.obtainInstance()) + } + }, { + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_phone.xml b/app/src/main/res/drawable/ic_phone.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_phone.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml deleted file mode 100644 index 898c1cf..0000000 --- a/app/src/main/res/drawable/ic_storage.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_permssion.xml b/app/src/main/res/layout/activity_permssion.xml deleted file mode 100644 index f45d374..0000000 --- a/app/src/main/res/layout/activity_permssion.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -