diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file 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 1eb4984..61d3f1a 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 @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -30,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* import com.pengxh.kt.lite.extensions.* @@ -45,6 +45,9 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") @@ -113,10 +116,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -129,19 +129,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -175,7 +164,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), "超级管理员" + ArrayList(), "超级管理员" ) //按钮状态 @@ -525,18 +514,29 @@ } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, - endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes - ) + + // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + lifecycleScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + + DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + } + } + DataBaseManager.get.addInspection( + inspectionId = newInspectionModel!!.id, + inspectionName = newInspectionModel!!.name, + startTime = newInspectionModel!!.startTime, + endTime = System.currentTimeMillis().timestampToCompleteDate(), + date = newInspectionModel!!.date, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, + endLng = latLngs.last.longitude, + endLat = latLngs.last.latitude, + routes = newInspectionModel!!.routes + ) + } } /** diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file 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 1eb4984..61d3f1a 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 @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -30,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* import com.pengxh.kt.lite.extensions.* @@ -45,6 +45,9 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") @@ -113,10 +116,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -129,19 +129,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -175,7 +164,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), "超级管理员" + ArrayList(), "超级管理员" ) //按钮状态 @@ -525,18 +514,29 @@ } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, - endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes - ) + + // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + lifecycleScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + + DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + } + } + DataBaseManager.get.addInspection( + inspectionId = newInspectionModel!!.id, + inspectionName = newInspectionModel!!.name, + startTime = newInspectionModel!!.startTime, + endTime = System.currentTimeMillis().timestampToCompleteDate(), + date = newInspectionModel!!.date, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, + endLng = latLngs.last.longitude, + endLat = latLngs.last.latitude, + routes = newInspectionModel!!.routes + ) + } } /** diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 6a81170..bd1a521 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -47,6 +47,7 @@ } false } + mainViewPager.offscreenPageLimit = fragmentPages.size mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file 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 1eb4984..61d3f1a 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 @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -30,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* import com.pengxh.kt.lite.extensions.* @@ -45,6 +45,9 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") @@ -113,10 +116,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -129,19 +129,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -175,7 +164,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), "超级管理员" + ArrayList(), "超级管理员" ) //按钮状态 @@ -525,18 +514,29 @@ } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, - endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes - ) + + // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + lifecycleScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + + DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + } + } + DataBaseManager.get.addInspection( + inspectionId = newInspectionModel!!.id, + inspectionName = newInspectionModel!!.name, + startTime = newInspectionModel!!.startTime, + endTime = System.currentTimeMillis().timestampToCompleteDate(), + date = newInspectionModel!!.date, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, + endLng = latLngs.last.longitude, + endLat = latLngs.last.latitude, + routes = newInspectionModel!!.routes + ) + } } /** diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 6a81170..bd1a521 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -47,6 +47,7 @@ } false } + mainViewPager.offscreenPageLimit = fragmentPages.size mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { 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 bbe9d20..794152f 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 @@ -12,7 +12,6 @@ import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.QueryEventFragment import com.casic.birmm.inspect.single.fragment.QueryInspectionFragment @@ -45,7 +44,7 @@ startLat: Double, endLng: Double, endLat: Double, - routes: ArrayList + routes: ArrayList ) { val bean = InspectionLocalBean() bean.inspectionId = inspectionId @@ -59,14 +58,6 @@ bean.endLat = endLat bean.user = "超级管理员" - routes.forEach { - val localBean = RouteLocalBean() - localBean.inspectionId = inspectionId - localBean.lat = it.lat - localBean.lng = it.lng - routeLocalBeanDao.insert(localBean) - } - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { override fun onRegionCodeSearched(address: String) { bean.startAddress = address @@ -99,6 +90,14 @@ }) } + fun addInspectionRoute(inspectionId: String, point: LatLng) { + val localBean = RouteLocalBean() + localBean.inspectionId = inspectionId + localBean.lat = point.latitude + localBean.lng = point.longitude + routeLocalBeanDao.insert(localBean) + } + private fun isInspectionExist(inspectionId: String): Boolean { val count = inspectionDao.queryBuilder().where( InspectionLocalBeanDao.Properties.InspectionId.eq(inspectionId) diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file 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 1eb4984..61d3f1a 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 @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -30,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* import com.pengxh.kt.lite.extensions.* @@ -45,6 +45,9 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") @@ -113,10 +116,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -129,19 +129,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -175,7 +164,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), "超级管理员" + ArrayList(), "超级管理员" ) //按钮状态 @@ -525,18 +514,29 @@ } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, - endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes - ) + + // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + lifecycleScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + + DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + } + } + DataBaseManager.get.addInspection( + inspectionId = newInspectionModel!!.id, + inspectionName = newInspectionModel!!.name, + startTime = newInspectionModel!!.startTime, + endTime = System.currentTimeMillis().timestampToCompleteDate(), + date = newInspectionModel!!.date, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, + endLng = latLngs.last.longitude, + endLat = latLngs.last.latitude, + routes = newInspectionModel!!.routes + ) + } } /** diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 6a81170..bd1a521 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -47,6 +47,7 @@ } false } + mainViewPager.offscreenPageLimit = fragmentPages.size mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { 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 bbe9d20..794152f 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 @@ -12,7 +12,6 @@ import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.QueryEventFragment import com.casic.birmm.inspect.single.fragment.QueryInspectionFragment @@ -45,7 +44,7 @@ startLat: Double, endLng: Double, endLat: Double, - routes: ArrayList + routes: ArrayList ) { val bean = InspectionLocalBean() bean.inspectionId = inspectionId @@ -59,14 +58,6 @@ bean.endLat = endLat bean.user = "超级管理员" - routes.forEach { - val localBean = RouteLocalBean() - localBean.inspectionId = inspectionId - localBean.lat = it.lat - localBean.lng = it.lng - routeLocalBeanDao.insert(localBean) - } - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { override fun onRegionCodeSearched(address: String) { bean.startAddress = address @@ -99,6 +90,14 @@ }) } + fun addInspectionRoute(inspectionId: String, point: LatLng) { + val localBean = RouteLocalBean() + localBean.inspectionId = inspectionId + localBean.lat = point.latitude + localBean.lng = point.longitude + routeLocalBeanDao.insert(localBean) + } + private fun isInspectionExist(inspectionId: String): Boolean { val count = inspectionDao.queryBuilder().where( InspectionLocalBeanDao.Properties.InspectionId.eq(inspectionId) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index d535178..c882675 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -15,7 +15,6 @@ 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.model.RoutePointModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson @@ -113,12 +112,12 @@ return@Observer } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) + val type = object : TypeToken>() {}.type + val routeModels = gson.fromJson>(routeJson, type) //画线 val latLngPoints: ArrayList = ArrayList() routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) + latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) } aMap.addPolyline( PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) diff --git a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt index bea64eb..ec3a4ea 100644 --- a/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt +++ b/app/src/main/java/com/casic/birmm/inspect/extensions/ArrayList.kt @@ -1,10 +1,10 @@ package com.casic.birmm.inspect.extensions +import com.amap.api.maps.model.LatLng import com.amap.api.services.core.LatLonPoint import com.amap.api.services.route.DistanceSearch import com.casic.birmm.inspect.base.BaseApplication import com.casic.birmm.inspect.callback.OnDistanceSearchListener -import com.casic.birmm.inspect.model.RoutePointModel import java.text.DecimalFormat @@ -39,19 +39,19 @@ private val distanceQuery by lazy { DistanceSearch.DistanceQuery() } private val decimalFormat by lazy { DecimalFormat("#.##") } -fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { +fun ArrayList.calculateDistance(listener: OnDistanceSearchListener) { if (this.isEmpty()) { listener.onDistanceSearched("0.00") } val last = this.last() - val dest = LatLonPoint(last.lat, last.lng) + val dest = LatLonPoint(last.latitude, last.longitude) //去掉最后一个点 this.removeLast() val latLonPoints: ArrayList = ArrayList() this.forEach { - latLonPoints.add(LatLonPoint(it.lat, it.lng)) + latLonPoints.add(LatLonPoint(it.latitude, it.longitude)) } distanceQuery.origins = latLonPoints 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 0bb8ba1..f4a0592 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 @@ -31,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.model.UserInfoModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.utils.LocaleConstant @@ -169,10 +168,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -185,19 +181,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -231,7 +216,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), userData.name!! + ArrayList(), userData.name!! ) //按钮状态 @@ -556,14 +541,19 @@ return } + // 包装routes,每五个点取一次经纬度 + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + } + inspectionViewModel.addInspection( id = newInspectionModel!!.id, name = newInspectionModel!!.name, startTime = newInspectionModel!!.startTime, endTime = System.currentTimeMillis().timestampToCompleteDate(), date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, endLng = latLngs.last.longitude, endLat = latLngs.last.latitude, routes = gson.toJson(newInspectionModel!!.routes), 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 b0c666a..235ce84 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 @@ -1,21 +1,11 @@ package com.casic.birmm.inspect.fragment import android.os.Handler -import android.widget.TextView import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.DividerItemDecoration -import com.amap.api.maps.model.LatLng 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.extensions.calculateDistance -import com.casic.birmm.inspect.extensions.toChinese import com.casic.birmm.inspect.model.InspectListModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.view.InspectionRouteActivity import com.casic.birmm.inspect.vm.InspectionViewModel -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.adapter.NormalRecyclerAdapter import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.base.KotlinBaseFragment @@ -35,9 +25,8 @@ private var isLoadMore = false private var dataBeans: MutableList = ArrayList() private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var adapter: NormalRecyclerAdapter + private lateinit var inspectListAdapter: NormalRecyclerAdapter private lateinit var viewModel: InspectionViewModel - private val gson by lazy { Gson() } override fun initLayoutView(): Int = R.layout.fragment_query_inspect @@ -54,7 +43,7 @@ val dataRows = it.data?.rows!! when { isRefresh -> { - adapter.setRefreshData(dataRows) + inspectListAdapter.setRefreshData(dataRows) inspectLayout.finishRefresh() isRefresh = false } @@ -62,7 +51,7 @@ if (dataRows.size == 0) { "到底了,别拉了".show(requireContext()) } - adapter.setLoadMoreData(dataRows) + inspectListAdapter.setLoadMoreData(dataRows) inspectLayout.finishLoadMore() isLoadMore = false } @@ -108,7 +97,7 @@ emptyView.show("抱歉,无法查询到相关记录", null) } else { emptyView.hide() - adapter = object : + inspectListAdapter = object : NormalRecyclerAdapter( R.layout.item_inspect_rv_l, dataBeans ) { @@ -116,49 +105,17 @@ viewHolder: ViewHolder, position: Int, item: InspectListModel.DataModel.RowsModel ) { - val routeJson = item.routes!! - val routeModels = if (routeJson.isEmpty()) { - ArrayList() - } else { - gson.fromJson>( - routeJson, - object : TypeToken>() {}.type - ) - } - - val startLocationView = viewHolder.getView(R.id.startLocationView) - val endLocationView = viewHolder.getView(R.id.endLocationView) - LatLng(item.startLat, item.startLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - startLocationView.text = address - } - }) - - LatLng(item.endLat, item.endLng).toChinese(object : - OnGeocodeSearchListener { - override fun onRegionCodeSearched(address: String) { - endLocationView.text = address - } - }) - - val distanceView = viewHolder.getView(R.id.distanceView) - routeModels.calculateDistance(object : OnDistanceSearchListener { - override fun onDistanceSearched(distance: String) { - distanceView.text = distance - } - }) - - viewHolder.setText(R.id.inspectMsgView, item.name) + viewHolder + .setText(R.id.inspectMsgView, item.name) .setText(R.id.startTimeView, item.startTime) +// .setText(R.id.startLocationView, item.startAddress) .setText(R.id.endTimeView, item.endTime) +// .setText(R.id.endLocationView, item.endAddress) +// .setText(R.id.distanceView, item.distance.toString()) } } - inspectRecyclerView.addItemDecoration( - DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) - ) - inspectRecyclerView.adapter = adapter - adapter.setOnItemClickedListener(object : + inspectRecyclerView.adapter = inspectListAdapter + inspectListAdapter.setOnItemClickedListener(object : NormalRecyclerAdapter.OnItemClickedListener { override fun onItemClicked( position: Int, t: InspectListModel.DataModel.RowsModel diff --git a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java index ced0c48..4dfb2d7 100644 --- a/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java +++ b/app/src/main/java/com/casic/birmm/inspect/greendao/RouteLocalBeanDao.java @@ -12,7 +12,6 @@ import org.greenrobot.greendao.internal.DaoConfig; // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. - /** * DAO for table "ROUTE_LOCAL_BEAN". */ @@ -44,7 +43,7 @@ * Creates the underlying database table. */ public static void createTable(Database db, boolean ifNotExists) { - String constraint = ifNotExists ? "IF NOT EXISTS " : ""; + String constraint = ifNotExists ? "IF NOT EXISTS ": ""; db.execSQL("CREATE TABLE " + constraint + "\"ROUTE_LOCAL_BEAN\" (" + // "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id "\"INSPECTION_ID\" TEXT," + // 1: inspectionId @@ -52,9 +51,7 @@ "\"LAT\" REAL NOT NULL );"); // 3: lat } - /** - * Drops the underlying database table. - */ + /** Drops the underlying database table. */ public static void dropTable(Database db, boolean ifExists) { String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ROUTE_LOCAL_BEAN\""; db.execSQL(sql); @@ -63,12 +60,12 @@ @Override protected final void bindValues(DatabaseStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -80,12 +77,12 @@ @Override protected final void bindValues(SQLiteStatement stmt, RouteLocalBean entity) { stmt.clearBindings(); - + Long id = entity.getId(); if (id != null) { stmt.bindLong(1, id); } - + String inspectionId = entity.getInspectionId(); if (inspectionId != null) { stmt.bindString(2, inspectionId); @@ -142,5 +139,5 @@ protected final boolean isEntityUpdateable() { return true; } - + } diff --git a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt index a7b5de0..316fe0e 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/NewInspectionModel.kt @@ -1,5 +1,7 @@ package com.casic.birmm.inspect.model +import com.amap.api.maps.model.LatLng + data class NewInspectionModel( var id: String, var name: String, @@ -10,6 +12,6 @@ var startLat: Double, var endLng: Double, var endLat: Double, - var routes: ArrayList, + var routes: ArrayList, var user: String ) \ No newline at end of file diff --git a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt index 87c2850..69aff35 100644 --- a/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt +++ b/app/src/main/java/com/casic/birmm/inspect/model/RoutePointModel.kt @@ -1,3 +1,3 @@ package com.casic.birmm.inspect.model -data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file +//data class RoutePointModel(var lat: Double, var lng: Double) \ No newline at end of file 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 1eb4984..61d3f1a 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 @@ -16,6 +16,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions @@ -30,7 +31,6 @@ import com.casic.birmm.inspect.extensions.toDataModel import com.casic.birmm.inspect.extensions.toDeviceCode import com.casic.birmm.inspect.model.NewInspectionModel -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.view.NewEventActivity import com.casic.birmm.inspect.utils.* import com.pengxh.kt.lite.extensions.* @@ -45,6 +45,9 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet import kotlinx.android.synthetic.main.single_fragment_map_inspect.view.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.util.* @SuppressLint("MissingPermission") @@ -113,10 +116,7 @@ return } - val longitude = aMapLocation.longitude.toString() - val latitude = aMapLocation.latitude.toString() - - val latLng = LatLng(latitude.toDouble(), longitude.toDouble()) + val latLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) //移动到指定经纬度 val cameraPosition = CameraPosition(latLng, 16f, 0f, 0f) @@ -129,19 +129,8 @@ //绘制线 aMap.addPolyline( - PolylineOptions().addAll(latLngs).width(10f).color(Color.RED) + PolylineOptions().add(latLng).width(10f).color(Color.RED) ) - - //设置起始经纬度 - newInspectionModel!!.startLng = latLngs.first.longitude - newInspectionModel!!.startLat = latLngs.first.latitude - - // 包装routes,每五个点取一次经纬度 - for (i in 0..latLngs.size step 5) { - newInspectionModel!!.routes.add( - RoutePointModel(latLngs[i].latitude, latLngs[i].longitude) - ) - } } } }) @@ -175,7 +164,7 @@ currentTimeMillis.id(), value, startTime, "", currentTimeMillis.timestampToDate(), 0.0, 0.0, 0.0, 0.0, - ArrayList(), "超级管理员" + ArrayList(), "超级管理员" ) //按钮状态 @@ -525,18 +514,29 @@ } LoadingDialogHub.show(requireActivity(), "数据保存中,请稍后...") - DataBaseManager.get.addInspection( - inspectionId = newInspectionModel!!.id, - inspectionName = newInspectionModel!!.name, - startTime = newInspectionModel!!.startTime, - endTime = System.currentTimeMillis().timestampToCompleteDate(), - date = newInspectionModel!!.date, - startLng = newInspectionModel!!.startLng, - startLat = newInspectionModel!!.startLat, - endLng = latLngs.last.longitude, - endLat = latLngs.last.latitude, - routes = newInspectionModel!!.routes - ) + + // 包装routes,每五个点取一次经纬度,每次循环都需要清空之前的数据,否则会重复存相同的点 + lifecycleScope.launch(Dispatchers.Main) { + withContext(Dispatchers.IO) { + for (i in 0 until latLngs.size step 5) { + newInspectionModel!!.routes.add(latLngs[i]) + + DataBaseManager.get.addInspectionRoute(newInspectionModel!!.id, latLngs[i]) + } + } + DataBaseManager.get.addInspection( + inspectionId = newInspectionModel!!.id, + inspectionName = newInspectionModel!!.name, + startTime = newInspectionModel!!.startTime, + endTime = System.currentTimeMillis().timestampToCompleteDate(), + date = newInspectionModel!!.date, + startLng = latLngs.first.longitude, + startLat = latLngs.first.latitude, + endLng = latLngs.last.longitude, + endLat = latLngs.last.latitude, + routes = newInspectionModel!!.routes + ) + } } /** diff --git a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt index 6a81170..bd1a521 100644 --- a/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/single/view/MainActivity.kt @@ -47,6 +47,7 @@ } false } + mainViewPager.offscreenPageLimit = fragmentPages.size mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { 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 bbe9d20..794152f 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 @@ -12,7 +12,6 @@ import com.casic.birmm.inspect.greendao.InspectionLocalBeanDao import com.casic.birmm.inspect.greendao.RouteLocalBeanDao import com.casic.birmm.inspect.greendao.TaskEventLocalBeanDao -import com.casic.birmm.inspect.model.RoutePointModel import com.casic.birmm.inspect.single.fragment.HomePageFragment import com.casic.birmm.inspect.single.fragment.QueryEventFragment import com.casic.birmm.inspect.single.fragment.QueryInspectionFragment @@ -45,7 +44,7 @@ startLat: Double, endLng: Double, endLat: Double, - routes: ArrayList + routes: ArrayList ) { val bean = InspectionLocalBean() bean.inspectionId = inspectionId @@ -59,14 +58,6 @@ bean.endLat = endLat bean.user = "超级管理员" - routes.forEach { - val localBean = RouteLocalBean() - localBean.inspectionId = inspectionId - localBean.lat = it.lat - localBean.lng = it.lng - routeLocalBeanDao.insert(localBean) - } - LatLng(startLat, startLng).toChinese(object : OnGeocodeSearchListener { override fun onRegionCodeSearched(address: String) { bean.startAddress = address @@ -99,6 +90,14 @@ }) } + fun addInspectionRoute(inspectionId: String, point: LatLng) { + val localBean = RouteLocalBean() + localBean.inspectionId = inspectionId + localBean.lat = point.latitude + localBean.lng = point.longitude + routeLocalBeanDao.insert(localBean) + } + private fun isInspectionExist(inspectionId: String): Boolean { val count = inspectionDao.queryBuilder().where( InspectionLocalBeanDao.Properties.InspectionId.eq(inspectionId) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt index d535178..c882675 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/InspectionRouteActivity.kt @@ -15,7 +15,6 @@ 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.model.RoutePointModel import com.casic.birmm.inspect.utils.LoadingDialogHub import com.casic.birmm.inspect.vm.InspectionViewModel import com.google.gson.Gson @@ -113,12 +112,12 @@ return@Observer } //[{"lat":39.917433,"lng":116.269525},{"lat":39.917433,"lng":116.269525}] - val type = object : TypeToken>() {}.type - val routeModels = gson.fromJson>(routeJson, type) + val type = object : TypeToken>() {}.type + val routeModels = gson.fromJson>(routeJson, type) //画线 val latLngPoints: ArrayList = ArrayList() routeModels.forEach { routeModel -> - latLngPoints.add(LatLng(routeModel.lat, routeModel.lng)) + latLngPoints.add(LatLng(routeModel.latitude, routeModel.longitude)) } aMap.addPolyline( PolylineOptions().addAll(latLngPoints).width(10.toFloat()).color(Color.RED) diff --git a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt index e3fab08..e2531b9 100644 --- a/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt +++ b/app/src/main/java/com/casic/birmm/inspect/view/MainActivity.kt @@ -47,8 +47,8 @@ } false } - mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.offscreenPageLimit = fragmentPages.size //缓存页数 + mainViewPager.adapter = ViewPagerAdapter(fragmentPages, supportFragmentManager) mainViewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) {