diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index 8499d8f..5464803 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -6,9 +6,7 @@ import com.casic.birmm.inspect.bean.RouteLocalBean import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao @@ -43,8 +41,10 @@ date: String, startLng: Double, startLat: Double, + startAddress: String, endLng: Double, endLat: Double, + endAddress: String, routes: ArrayList ) { val bean = InspectionLocalBean() @@ -56,21 +56,11 @@ bean.date = date bean.startLng = startLng bean.startLat = startLat + bean.startAddress = startAddress bean.endLng = endLng bean.endLat = endLat - bean.user = "超级管理员" - - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.startAddress = address - - LatLng(endLat, endLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.endAddress = address - } - }) - } - }) + bean.endAddress = endAddress + bean.user = "智巡宝" routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index 8499d8f..5464803 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -6,9 +6,7 @@ import com.casic.birmm.inspect.bean.RouteLocalBean import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao @@ -43,8 +41,10 @@ date: String, startLng: Double, startLat: Double, + startAddress: String, endLng: Double, endLat: Double, + endAddress: String, routes: ArrayList ) { val bean = InspectionLocalBean() @@ -56,21 +56,11 @@ bean.date = date bean.startLng = startLng bean.startLat = startLat + bean.startAddress = startAddress bean.endLng = endLng bean.endLat = endLat - bean.user = "超级管理员" - - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.startAddress = address - - LatLng(endLat, endLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.endAddress = address - } - }) - } - }) + bean.endAddress = endAddress + bean.user = "智巡宝" routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt index 525b4b0..11be914 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt @@ -22,6 +22,7 @@ init { //设置定位模式为高精度模式,AMapLocationMode.Battery_Saving为低功耗模式,AMapLocationMode.Device_Sensors是仅设备模式 locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy + locationOption.interval = 10 * 1000 //10s定位一次 locationOption.isNeedAddress = true //设置是否返回地址信息(默认返回地址信息) locationOption.isLocationCacheEnable = true //可选,设置是否使用缓存定位,默认为true } diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index 8499d8f..5464803 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -6,9 +6,7 @@ import com.casic.birmm.inspect.bean.RouteLocalBean import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao @@ -43,8 +41,10 @@ date: String, startLng: Double, startLat: Double, + startAddress: String, endLng: Double, endLat: Double, + endAddress: String, routes: ArrayList ) { val bean = InspectionLocalBean() @@ -56,21 +56,11 @@ bean.date = date bean.startLng = startLng bean.startLat = startLat + bean.startAddress = startAddress bean.endLng = endLng bean.endLat = endLat - bean.user = "超级管理员" - - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.startAddress = address - - LatLng(endLat, endLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.endAddress = address - } - }) - } - }) + bean.endAddress = endAddress + bean.user = "智巡宝" routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt index 525b4b0..11be914 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt @@ -22,6 +22,7 @@ init { //设置定位模式为高精度模式,AMapLocationMode.Battery_Saving为低功耗模式,AMapLocationMode.Device_Sensors是仅设备模式 locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy + locationOption.interval = 10 * 1000 //10s定位一次 locationOption.isNeedAddress = true //设置是否返回地址信息(默认返回地址信息) locationOption.isLocationCacheEnable = true //可选,设置是否使用缓存定位,默认为true } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index 0d02f00..a12a7ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -167,7 +167,6 @@ @POST("/route/add") suspend fun uploadRoutePoint( @Header("token") token: String, - @Field("id") id: String, @Field("inspectionId") inspectionId: String, @Field("lat") lat: Double, @Field("lng") lng: Double, diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index 8499d8f..5464803 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -6,9 +6,7 @@ import com.casic.birmm.inspect.bean.RouteLocalBean import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao @@ -43,8 +41,10 @@ date: String, startLng: Double, startLat: Double, + startAddress: String, endLng: Double, endLat: Double, + endAddress: String, routes: ArrayList ) { val bean = InspectionLocalBean() @@ -56,21 +56,11 @@ bean.date = date bean.startLng = startLng bean.startLat = startLat + bean.startAddress = startAddress bean.endLng = endLng bean.endLat = endLat - bean.user = "超级管理员" - - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.startAddress = address - - LatLng(endLat, endLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.endAddress = address - } - }) - } - }) + bean.endAddress = endAddress + bean.user = "智巡宝" routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt index 525b4b0..11be914 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt @@ -22,6 +22,7 @@ init { //设置定位模式为高精度模式,AMapLocationMode.Battery_Saving为低功耗模式,AMapLocationMode.Device_Sensors是仅设备模式 locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy + locationOption.interval = 10 * 1000 //10s定位一次 locationOption.isNeedAddress = true //设置是否返回地址信息(默认返回地址信息) locationOption.isLocationCacheEnable = true //可选,设置是否使用缓存定位,默认为true } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index 0d02f00..a12a7ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -167,7 +167,6 @@ @POST("/route/add") suspend fun uploadRoutePoint( @Header("token") token: String, - @Field("id") id: String, @Field("inspectionId") inspectionId: String, @Field("lat") lat: Double, @Field("lng") lng: Double, diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 374e12f..4d04fae 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -9,7 +9,6 @@ import okhttp3.MultipartBody import okhttp3.RequestBody import java.io.File -import java.util.UUID object RetrofitServiceManager { private val api by lazy { @@ -175,7 +174,6 @@ suspend fun uploadRoutePoint(inspectionId: String, latLng: LatLng, uploadTime: String): String { return api.uploadRoutePoint( AuthenticationHelper.token!!, - UUID.randomUUID().toString(), inspectionId, latLng.latitude, latLng.longitude, diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt index 38edc79..a4e4c6f 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/HomePageFragment.kt @@ -26,12 +26,10 @@ import com.amap.api.maps.model.PolylineOptions import com.casic.birmm.inspect.R import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentMapInspectBinding import com.casic.birmm.inspect.extensions.addAll import com.casic.birmm.inspect.extensions.calculateDistance import com.casic.birmm.inspect.extensions.id -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel @@ -79,7 +77,7 @@ private lateinit var inspectionViewModel: InspectionViewModel private lateinit var routeViewModel: RouteViewModel private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -148,7 +146,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -160,7 +166,7 @@ }) //按钮默认状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -235,7 +241,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -257,7 +263,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -271,8 +277,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -574,51 +580,39 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } - // 包装routes,每五个点取一次经纬度 - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + // 上传巡检位置点 + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) //上传点位 routeViewModel.uploadRoutePoint( - newInspectionModel!!.id, + newModel!!.id, latLngs[i], System.currentTimeMillis().timestampToCompleteDate() ) } - LatLng(latLngs.first.latitude, latLngs.first.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.startAddress = address - - LatLng(latLngs.last.latitude, latLngs.last.longitude) - .toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - newInspectionModel!!.endAddress = address - } - }) - } - }) - - newInspectionModel!!.routes.calculateDistance(object : OnDistanceSearchListener { + val first = latLngs.first + val last = latLngs.last + newModel!!.routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { inspectionViewModel.addInspection( - id = newInspectionModel!!.id, + id = newModel!!.id, deviceCode = connectedDeviceName, - name = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + name = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = latLngs.first.longitude, - startLat = latLngs.first.latitude, - newInspectionModel!!.startAddress, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - newInspectionModel!!.endAddress, + date = newModel!!.date, + startLng = first.longitude, + startLat = first.latitude, + newModel!!.startAddress, + endLng = last.longitude, + endLat = last.latitude, + newModel!!.endAddress, distance, user = userName ) @@ -654,7 +648,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -677,8 +671,8 @@ eventViewModel.addEventTask( id = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, - name = newInspectionModel!!.name, + inspectionId = newModel!!.id, + name = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -709,11 +703,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt index aa69b3d..c0a4ba8 100644 --- a/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/fragment/QueryInspectionFragment.kt @@ -6,11 +6,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.lifecycle.ViewModelProvider -import com.amap.api.maps.model.LatLng import com.casic.birmm.inspect.R -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.databinding.FragmentQueryInspectBinding -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.view.InspectionRouteActivity @@ -59,36 +56,12 @@ item.deviceCode } - var startAddress = "" - if (item.startAddress.isNullOrBlank()) { - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startAddress = address - } - }) - } else { - startAddress = item.startAddress - } - - var endAddress = "" - if (item.endAddress.isNullOrBlank()) { - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endAddress = address - } - }) - } else { - endAddress = item.endAddress - } - viewHolder.setText(R.id.deviceCodeView, deviceCode) .setText(R.id.taskNameView, "任务名称:${item.name}") .setText(R.id.startTimeView, item.startTime) - .setText(R.id.startLocationView, startAddress) + .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) - .setText(R.id.endLocationView, endAddress) + .setText(R.id.endLocationView, item.endAddress) .setText(R.id.distanceView, item.distance.toString()) .setOnClickListener(R.id.deleteView) { AlertControlDialog.Builder() diff --git a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt index 800adea..c3130e2 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/fragment/HomePageFragment.kt @@ -62,7 +62,7 @@ private val latLngs = LinkedList() private lateinit var vibrator: Vibrator private lateinit var aMap: AMap - private var newInspectionModel: NewInspectionModel? = null//新建巡检数据结构模型 + private var newModel: NewInspectionModel? = null//新建巡检数据结构模型 private var isBluetoothOn = true private var curConnectState = false private var currentDevice: BluetoothDevice? = null// 当前蓝牙设备 @@ -129,7 +129,15 @@ aMap.animateCamera(cameraUpdate, 1500, null) //newInspectionModel已完成初始化,说明已经新建巡检任务,数据可以开始保存了 - if (newInspectionModel != null) { + if (newModel != null) { + //设置巡检起点 + if (newModel!!.startAddress.isEmpty()) { + newModel!!.startAddress = aMapLocation.address + } + + //巡检终点每次定位都覆盖,降低调用sdk频率 + newModel!!.endAddress = aMapLocation.address + latLngs.add(latLng) //绘制线 @@ -141,7 +149,7 @@ }) //设置按钮状态 - if (newInspectionModel == null) { + if (newModel == null) { binding.stopInspectButton.isEnabled = false binding.addInspectionButton.isEnabled = true } @@ -166,7 +174,7 @@ binding.inspectNameView.text = value binding.inspectTimeView.text = startTime - newInspectionModel = NewInspectionModel( + newModel = NewInspectionModel( currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, "", 0.0, 0.0, "", @@ -188,7 +196,7 @@ menuButtonEvent() binding.newEventButton.setOnClickListener { - if (newInspectionModel == null) { + if (newModel == null) { "还未开始巡检,无法新建事件".show(requireContext()) return@setOnClickListener } @@ -202,8 +210,8 @@ requireContext().navigatePageTo( addAll( position.toString(), - newInspectionModel!!.id, - newInspectionModel!!.name, + newModel!!.id, + newModel!!.name, connectedDeviceName, latLngs.last.longitude.toString(), latLngs.last.latitude.toString() @@ -531,34 +539,36 @@ * * 如果保存到本地,则需要设置标识位,然后finish当前页面并提示 * */ - if (newInspectionModel == null) { + if (newModel == null) { "保存失败".show(requireContext()) return } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + // 保存巡检位置点 lifecycleScope.launch(Dispatchers.Main) { withContext(Dispatchers.IO) { - for (i in 0 until latLngs.size step 5) { - newInspectionModel!!.routes.add(latLngs[i]) + for (i in 0 until latLngs.size) { + newModel!!.routes.add(latLngs[i]) - DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + DataBaseManager.get.addInspectionRoute(newModel!!.id, latLngs[i]) } } DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, + inspectionName = newModel!!.name, + startTime = newModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, + date = newModel!!.date, startLng = latLngs.first.longitude, startLat = latLngs.first.latitude, + newModel!!.startAddress, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes + newModel!!.endAddress, + routes = newModel!!.routes ) } } @@ -591,7 +601,7 @@ //如果连续超过10个报警,自动生成报警事件 alarmCount++ if (alarmCount >= 10) { - if (newInspectionModel == null) { + if (newModel == null) { "没有巡检任务,无法自动记录报警".show(requireContext()) return } @@ -615,9 +625,9 @@ DataBaseManager.get.addEvent( taskId = UUID.randomUUID().toString(), - inspectionId = newInspectionModel!!.id, + inspectionId = newModel!!.id, deviceCode = connectedDeviceName, - eventTitle = newInspectionModel!!.name, + eventTitle = newModel!!.name, createTime = System.currentTimeMillis().timestampToCompleteDate(), type = "报警事件", lng = latLngs.last.longitude, @@ -648,11 +658,11 @@ } //设置标题和时间 - if (newInspectionModel == null) { + if (newModel == null) { return } - binding.inspectNameView.text = newInspectionModel!!.name - binding.inspectTimeView.text = newInspectionModel!!.startTime + binding.inspectNameView.text = newModel!!.name + binding.inspectTimeView.text = newModel!!.startTime } override fun onPause() { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt index 8499d8f..5464803 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/DataBaseManager.kt @@ -6,9 +6,7 @@ import com.casic.birmm.inspect.bean.RouteLocalBean import com.casic.birmm.inspect.bean.TaskEventLocalBean import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.callback.OnGeocodeSearchListener import com.casic.birmm.inspect.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao @@ -43,8 +41,10 @@ date: String, startLng: Double, startLat: Double, + startAddress: String, endLng: Double, endLat: Double, + endAddress: String, routes: ArrayList ) { val bean = InspectionLocalBean() @@ -56,21 +56,11 @@ bean.date = date bean.startLng = startLng bean.startLat = startLat + bean.startAddress = startAddress bean.endLng = endLng bean.endLat = endLat - bean.user = "超级管理员" - - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.startAddress = address - - LatLng(endLat, endLng).toChinese(object : OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - bean.endAddress = address - } - }) - } - }) + bean.endAddress = endAddress + bean.user = "智巡宝" routes.calculateDistance(object : OnDistanceSearchListener { override fun onDistanceSearched(distance: String) { diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt index 525b4b0..11be914 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/LocationHub.kt @@ -22,6 +22,7 @@ init { //设置定位模式为高精度模式,AMapLocationMode.Battery_Saving为低功耗模式,AMapLocationMode.Device_Sensors是仅设备模式 locationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy + locationOption.interval = 10 * 1000 //10s定位一次 locationOption.isNeedAddress = true //设置是否返回地址信息(默认返回地址信息) locationOption.isLocationCacheEnable = true //可选,设置是否使用缓存定位,默认为true } diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt index 0d02f00..a12a7ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitService.kt @@ -167,7 +167,6 @@ @POST("/route/add") suspend fun uploadRoutePoint( @Header("token") token: String, - @Field("id") id: String, @Field("inspectionId") inspectionId: String, @Field("lat") lat: Double, @Field("lng") lng: Double, diff --git a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt index 374e12f..4d04fae 100644 --- a/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/birmm/inspect/utils/retrofit/RetrofitServiceManager.kt @@ -9,7 +9,6 @@ import okhttp3.MultipartBody import okhttp3.RequestBody import java.io.File -import java.util.UUID object RetrofitServiceManager { private val api by lazy { @@ -175,7 +174,6 @@ suspend fun uploadRoutePoint(inspectionId: String, latLng: LatLng, uploadTime: String): String { return api.uploadRoutePoint( AuthenticationHelper.token!!, - UUID.randomUUID().toString(), inspectionId, latLng.latitude, latLng.longitude, diff --git a/app/src/main/res/layout/single_fragment_user_settings.xml b/app/src/main/res/layout/single_fragment_user_settings.xml index 219687a..684285d 100644 --- a/app/src/main/res/layout/single_fragment_user_settings.xml +++ b/app/src/main/res/layout/single_fragment_user_settings.xml @@ -51,20 +51,20 @@ android:layout_height="wrap_content"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:text="智巡宝" + android:textColor="@color/white" + android:textSize="@dimen/sp_22" /> + android:layout_centerVertical="true" + android:src="@drawable/ic_exit" />