diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt index 613429f..de865bc 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -1,26 +1,37 @@ package com.casic.br.ktd.view import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.View import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.model.TaskDetailModel import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler -//TODO 查询条件待定 -class TaskDetailActivity : KotlinBaseActivity() { +class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String + private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" private var endTime = "" + private var isAlarm = "" + private var page = 0 + private var isRefresh = false + private var isLoadMore = false + private var dataBeans: MutableList = ArrayList() override fun initEvent() { binding.calendarView.setOnClickListener { @@ -33,44 +44,34 @@ binding.selectedDateView.text = "$startDate ~ $endDate" - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } }).build().show() } //键盘搜索 - binding.gasValueView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.maxValueView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - textView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } binding.handleStateView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + override fun onItemSelected( + adapterView: AdapterView<*>?, view: View?, i: Int, l: Long + ) { + isAlarm = if (i == 0) { + "1" + } else { + "0" + } + + page = 1 + getTaskDetailByPage() } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -79,16 +80,10 @@ } //键盘搜索 - binding.taskLocationView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.taskLocationView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - textView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } @@ -96,35 +91,97 @@ binding.resetParamView.setOnClickListener { startTime = "" endTime = "" - binding.gasValueView.setText("") + binding.minValueView.setText("") + binding.maxValueView.setText("") binding.handleStateView.setSelection(0) binding.taskLocationView.setText("") + page = 1 - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + page = 1 + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getTaskDetailByPage() } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + taskId = intent.getStringExtra(Constant.INTENT_PARAM)!! taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") taskViewModel.detailResult.observe(this) { if (it.code == 200) { - if (it.data.size == 0) { - binding.taskDetailView.visibility = View.GONE - binding.emptyInclude.emptyLayout.visibility = View.VISIBLE - } else { - binding.taskDetailView.visibility = View.VISIBLE - binding.emptyInclude.emptyLayout.visibility = View.GONE + val dataRows = it.data?.rows!! + when { + isRefresh -> { + taskDetailAdapter.setRefreshData(dataRows) + binding.taskDetailLayout.finishRefresh() + isRefresh = false + } - val taskDetailAdapter = TaskDetailAdapter(this, it.data) - binding.taskDetailView.adapter = taskDetailAdapter + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + taskDetailAdapter.setLoadMoreData(dataRows) + binding.taskDetailLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2023091201) + } } } } } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023091201) { + if (dataBeans.size == 0) { + binding.taskDetailView.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE + } else { + binding.taskDetailView.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE + + taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + binding.taskDetailView.adapter = taskDetailAdapter + } + } + return true + } + + override fun onResume() { + super.onResume() + getTaskDetailByPage() + } + + private fun getTaskDetailByPage() { + taskViewModel.getTaskDetail( + taskId, + startTime, + endTime, + binding.minValueView.text.toString(), + binding.maxValueView.text.toString(), + isAlarm, + binding.taskLocationView.text.toString(), + page + ) + } + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt index 613429f..de865bc 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -1,26 +1,37 @@ package com.casic.br.ktd.view import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.View import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.model.TaskDetailModel import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler -//TODO 查询条件待定 -class TaskDetailActivity : KotlinBaseActivity() { +class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String + private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" private var endTime = "" + private var isAlarm = "" + private var page = 0 + private var isRefresh = false + private var isLoadMore = false + private var dataBeans: MutableList = ArrayList() override fun initEvent() { binding.calendarView.setOnClickListener { @@ -33,44 +44,34 @@ binding.selectedDateView.text = "$startDate ~ $endDate" - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } }).build().show() } //键盘搜索 - binding.gasValueView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.maxValueView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - textView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } binding.handleStateView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + override fun onItemSelected( + adapterView: AdapterView<*>?, view: View?, i: Int, l: Long + ) { + isAlarm = if (i == 0) { + "1" + } else { + "0" + } + + page = 1 + getTaskDetailByPage() } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -79,16 +80,10 @@ } //键盘搜索 - binding.taskLocationView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.taskLocationView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - textView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } @@ -96,35 +91,97 @@ binding.resetParamView.setOnClickListener { startTime = "" endTime = "" - binding.gasValueView.setText("") + binding.minValueView.setText("") + binding.maxValueView.setText("") binding.handleStateView.setSelection(0) binding.taskLocationView.setText("") + page = 1 - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + page = 1 + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getTaskDetailByPage() } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + taskId = intent.getStringExtra(Constant.INTENT_PARAM)!! taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") taskViewModel.detailResult.observe(this) { if (it.code == 200) { - if (it.data.size == 0) { - binding.taskDetailView.visibility = View.GONE - binding.emptyInclude.emptyLayout.visibility = View.VISIBLE - } else { - binding.taskDetailView.visibility = View.VISIBLE - binding.emptyInclude.emptyLayout.visibility = View.GONE + val dataRows = it.data?.rows!! + when { + isRefresh -> { + taskDetailAdapter.setRefreshData(dataRows) + binding.taskDetailLayout.finishRefresh() + isRefresh = false + } - val taskDetailAdapter = TaskDetailAdapter(this, it.data) - binding.taskDetailView.adapter = taskDetailAdapter + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + taskDetailAdapter.setLoadMoreData(dataRows) + binding.taskDetailLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2023091201) + } } } } } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023091201) { + if (dataBeans.size == 0) { + binding.taskDetailView.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE + } else { + binding.taskDetailView.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE + + taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + binding.taskDetailView.adapter = taskDetailAdapter + } + } + return true + } + + override fun onResume() { + super.onResume() + getTaskDetailByPage() + } + + private fun getTaskDetailByPage() { + taskViewModel.getTaskDetail( + taskId, + startTime, + endTime, + binding.minValueView.text.toString(), + binding.maxValueView.text.toString(), + isAlarm, + binding.taskLocationView.text.toString(), + page + ) + } + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index df3a25b..9d146f4 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -68,13 +68,17 @@ fun getTaskDetail( taskId: String, - a: String, - b: String, - c: String, - d: String, - e: String + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int ) = launch({ - val response = RetrofitServiceManager.getTaskDetail(taskId) + val response = RetrofitServiceManager.getTaskDetail( + taskId, beginDate, endDate, gas1, gas2, isAlarm, position, offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailResult.value = gson.fromJson( diff --git a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt index 3e55c16..56dcc5c 100644 --- a/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt +++ b/app/src/main/java/com/casic/br/ktd/adapter/TaskDetailAdapter.kt @@ -6,17 +6,34 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.br.ktd.R import com.casic.br.ktd.model.TaskDetailModel import com.pengxh.kt.lite.adapter.ViewHolder class TaskDetailAdapter( - ctx: Context, private val dataRows: MutableList + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt index 613429f..de865bc 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -1,26 +1,37 @@ package com.casic.br.ktd.view import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.View import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.model.TaskDetailModel import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler -//TODO 查询条件待定 -class TaskDetailActivity : KotlinBaseActivity() { +class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String + private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" private var endTime = "" + private var isAlarm = "" + private var page = 0 + private var isRefresh = false + private var isLoadMore = false + private var dataBeans: MutableList = ArrayList() override fun initEvent() { binding.calendarView.setOnClickListener { @@ -33,44 +44,34 @@ binding.selectedDateView.text = "$startDate ~ $endDate" - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } }).build().show() } //键盘搜索 - binding.gasValueView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.maxValueView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - textView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } binding.handleStateView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + override fun onItemSelected( + adapterView: AdapterView<*>?, view: View?, i: Int, l: Long + ) { + isAlarm = if (i == 0) { + "1" + } else { + "0" + } + + page = 1 + getTaskDetailByPage() } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -79,16 +80,10 @@ } //键盘搜索 - binding.taskLocationView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.taskLocationView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - textView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } @@ -96,35 +91,97 @@ binding.resetParamView.setOnClickListener { startTime = "" endTime = "" - binding.gasValueView.setText("") + binding.minValueView.setText("") + binding.maxValueView.setText("") binding.handleStateView.setSelection(0) binding.taskLocationView.setText("") + page = 1 - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + page = 1 + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getTaskDetailByPage() } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + taskId = intent.getStringExtra(Constant.INTENT_PARAM)!! taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") taskViewModel.detailResult.observe(this) { if (it.code == 200) { - if (it.data.size == 0) { - binding.taskDetailView.visibility = View.GONE - binding.emptyInclude.emptyLayout.visibility = View.VISIBLE - } else { - binding.taskDetailView.visibility = View.VISIBLE - binding.emptyInclude.emptyLayout.visibility = View.GONE + val dataRows = it.data?.rows!! + when { + isRefresh -> { + taskDetailAdapter.setRefreshData(dataRows) + binding.taskDetailLayout.finishRefresh() + isRefresh = false + } - val taskDetailAdapter = TaskDetailAdapter(this, it.data) - binding.taskDetailView.adapter = taskDetailAdapter + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + taskDetailAdapter.setLoadMoreData(dataRows) + binding.taskDetailLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2023091201) + } } } } } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023091201) { + if (dataBeans.size == 0) { + binding.taskDetailView.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE + } else { + binding.taskDetailView.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE + + taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + binding.taskDetailView.adapter = taskDetailAdapter + } + } + return true + } + + override fun onResume() { + super.onResume() + getTaskDetailByPage() + } + + private fun getTaskDetailByPage() { + taskViewModel.getTaskDetail( + taskId, + startTime, + endTime, + binding.minValueView.text.toString(), + binding.maxValueView.text.toString(), + isAlarm, + binding.taskLocationView.text.toString(), + page + ) + } + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index df3a25b..9d146f4 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -68,13 +68,17 @@ fun getTaskDetail( taskId: String, - a: String, - b: String, - c: String, - d: String, - e: String + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int ) = launch({ - val response = RetrofitServiceManager.getTaskDetail(taskId) + val response = RetrofitServiceManager.getTaskDetail( + taskId, beginDate, endDate, gas1, gas2, isAlarm, position, offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailResult.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml index b78ee6e..11bf309 100644 --- a/app/src/main/res/layout/activity_task_detail.xml +++ b/app/src/main/res/layout/activity_task_detail.xml @@ -53,16 +53,42 @@ app:cardElevation="@dimen/dp_2" app:cardUseCompatPadding="true"> - + android:orientation="horizontal"> + + + + + + + - + android:layout_height="match_parent"> + + + + + + + + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt index 613429f..de865bc 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -1,26 +1,37 @@ package com.casic.br.ktd.view import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.View import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.model.TaskDetailModel import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler -//TODO 查询条件待定 -class TaskDetailActivity : KotlinBaseActivity() { +class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String + private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" private var endTime = "" + private var isAlarm = "" + private var page = 0 + private var isRefresh = false + private var isLoadMore = false + private var dataBeans: MutableList = ArrayList() override fun initEvent() { binding.calendarView.setOnClickListener { @@ -33,44 +44,34 @@ binding.selectedDateView.text = "$startDate ~ $endDate" - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } }).build().show() } //键盘搜索 - binding.gasValueView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.maxValueView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - textView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } binding.handleStateView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + override fun onItemSelected( + adapterView: AdapterView<*>?, view: View?, i: Int, l: Long + ) { + isAlarm = if (i == 0) { + "1" + } else { + "0" + } + + page = 1 + getTaskDetailByPage() } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -79,16 +80,10 @@ } //键盘搜索 - binding.taskLocationView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.taskLocationView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - textView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } @@ -96,35 +91,97 @@ binding.resetParamView.setOnClickListener { startTime = "" endTime = "" - binding.gasValueView.setText("") + binding.minValueView.setText("") + binding.maxValueView.setText("") binding.handleStateView.setSelection(0) binding.taskLocationView.setText("") + page = 1 - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + page = 1 + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getTaskDetailByPage() } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + taskId = intent.getStringExtra(Constant.INTENT_PARAM)!! taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") taskViewModel.detailResult.observe(this) { if (it.code == 200) { - if (it.data.size == 0) { - binding.taskDetailView.visibility = View.GONE - binding.emptyInclude.emptyLayout.visibility = View.VISIBLE - } else { - binding.taskDetailView.visibility = View.VISIBLE - binding.emptyInclude.emptyLayout.visibility = View.GONE + val dataRows = it.data?.rows!! + when { + isRefresh -> { + taskDetailAdapter.setRefreshData(dataRows) + binding.taskDetailLayout.finishRefresh() + isRefresh = false + } - val taskDetailAdapter = TaskDetailAdapter(this, it.data) - binding.taskDetailView.adapter = taskDetailAdapter + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + taskDetailAdapter.setLoadMoreData(dataRows) + binding.taskDetailLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2023091201) + } } } } } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023091201) { + if (dataBeans.size == 0) { + binding.taskDetailView.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE + } else { + binding.taskDetailView.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE + + taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + binding.taskDetailView.adapter = taskDetailAdapter + } + } + return true + } + + override fun onResume() { + super.onResume() + getTaskDetailByPage() + } + + private fun getTaskDetailByPage() { + taskViewModel.getTaskDetail( + taskId, + startTime, + endTime, + binding.minValueView.text.toString(), + binding.maxValueView.text.toString(), + isAlarm, + binding.taskLocationView.text.toString(), + page + ) + } + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index df3a25b..9d146f4 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -68,13 +68,17 @@ fun getTaskDetail( taskId: String, - a: String, - b: String, - c: String, - d: String, - e: String + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int ) = launch({ - val response = RetrofitServiceManager.getTaskDetail(taskId) + val response = RetrofitServiceManager.getTaskDetail( + taskId, beginDate, endDate, gas1, gas2, isAlarm, position, offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailResult.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml index b78ee6e..11bf309 100644 --- a/app/src/main/res/layout/activity_task_detail.xml +++ b/app/src/main/res/layout/activity_task_detail.xml @@ -53,16 +53,42 @@ app:cardElevation="@dimen/dp_2" app:cardUseCompatPadding="true"> - + android:orientation="horizontal"> + + + + + + + - + android:layout_height="match_parent"> + + + + + + + - - - - + ctx: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private val TYPE_TOP_TITLE = 0 private val TYPE_ITEM_DATA = 1 private var inflater: LayoutInflater = LayoutInflater.from(ctx) + private val geoSearch by lazy { GeocodeSearch(ctx) } + + fun setRefreshData(dataRows: MutableList) { + this.dataRows.clear() + this.dataRows.addAll(dataRows) + notifyDataSetChanged() + } + + fun setLoadMoreData(dataRows: MutableList) { + this.dataRows.addAll(dataRows) + notifyItemRangeInserted(this.dataRows.size, dataRows.size) + } override fun getItemCount(): Int = dataRows.size + 1 @@ -49,11 +66,36 @@ linearLayout.setBackgroundColor(Color.parseColor("#FFFFFF")) } + if (item.lagitude.isNotEmpty() && item.longitude.isNotEmpty()) { + val queryParam = RegeocodeQuery( + LatLonPoint(item.lagitude.toDouble(), item.longitude.toDouble()), + 200f, GeocodeSearch.AMAP + ) + geoSearch.getFromLocationAsyn(queryParam) + geoSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult, code: Int) { + if (code == 1000) { + val address = regeocodeResult.regeocodeAddress.formatAddress + holder.setText(R.id.locationView, address) + } + } + + override fun onGeocodeSearched(geocodeResult: GeocodeResult?, i: Int) {} + }) + } + + val isAlarm = if (item.isAlarm == "1") { + "是" + } else { + "否" + } + holder.setText(R.id.locateTimeView, item.ts).setText(R.id.gasValueView, item.gas) .setText(R.id.horizontalAngleView, item.direction) - .setText(R.id.verticalAngleView, item.pitch).setText(R.id.isAlarmView, item.isAlarm) - .setText(R.id.alarmCodeView, item.alarmCode).setText(R.id.speedView, item.speed) - .setText(R.id.lngView, item.longitude).setText(R.id.latView, item.lagitude) + .setText(R.id.verticalAngleView, item.pitch) + .setText(R.id.isAlarmView, isAlarm) + .setText(R.id.speedView, item.speed) } } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt index b381939..7b8d65b 100644 --- a/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/ktd/fragment/HomePageFragment.kt @@ -1,7 +1,6 @@ package com.casic.br.ktd.fragment import android.annotation.SuppressLint -import android.graphics.Color import android.os.Bundle import android.os.Handler import android.os.Message @@ -19,7 +18,6 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.PolylineOptions import com.casic.br.ktd.R import com.casic.br.ktd.databinding.FragmentHomeBinding import com.casic.br.ktd.extensions.toChineseAddress @@ -129,7 +127,7 @@ val strengthEntries: ArrayList = ArrayList() it.data.forEachIndexed { i, rowsBean -> // x 轴坐标 - xAxisLabels.add(rowsBean.date) + xAxisLabels.add(rowsBean.date.split(" ")[0]) //任务 strengthEntries.add( @@ -158,39 +156,39 @@ } } } - taskViewModel.detailResult.observe(this) { - if (it.code == 200) { - //设置起点 - val first = it.data.first() - addMarker( - LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), - "", - R.mipmap.start - ) - //设置终点 - val last = it.data.last() - addMarker( - LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), - "", - R.mipmap.end - ) - it.data.forEach { task -> - if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { - //瞄点画线 - val latLngPoints = ArrayList() - latLngPoints.add( - LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) - ) - aMap.addPolyline( - PolylineOptions() - .addAll(latLngPoints) - .width(10.toFloat()) - .color(Color.RED) - ) - } - } - } - } +// taskViewModel.detailResult.observe(this) { +// if (it.code == 200) { +// //设置起点 +// val first = it.data.first() +// addMarker( +// LatLng(first.lagitude.toDouble(), first.longitude.toDouble()), +// "", +// R.mipmap.start +// ) +// //设置终点 +// val last = it.data.last() +// addMarker( +// LatLng(last.lagitude.toDouble(), last.longitude.toDouble()), +// "", +// R.mipmap.end +// ) +// it.data.forEach { task -> +// if (task.lagitude.isNotEmpty() && task.longitude.isNotEmpty()) { +// //瞄点画线 +// val latLngPoints = ArrayList() +// latLngPoints.add( +// LatLng(task.lagitude.toDouble(), task.longitude.toDouble()) +// ) +// aMap.addPolyline( +// PolylineOptions() +// .addAll(latLngPoints) +// .width(10.toFloat()) +// .color(Color.RED) +// ) +// } +// } +// } +// } } override fun handleMessage(msg: Message): Boolean { @@ -314,8 +312,9 @@ } } + //TODO 待确定 routeView.setOnClickListener { - taskViewModel.getTaskDetail(id, "", "", "", "", "") +// taskViewModel.getTaskDetail(id, "", "", "", "", "") } } } diff --git a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java index 62736d1..675e766 100644 --- a/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java +++ b/app/src/main/java/com/casic/br/ktd/model/TaskDetailModel.java @@ -5,7 +5,7 @@ public class TaskDetailModel { private Integer code; - private List data; + private DataModel data; private String message; public Integer getCode() { @@ -16,11 +16,11 @@ this.code = code; } - public List getData() { + public DataModel getData() { return data; } - public void setData(List data) { + public void setData(DataModel data) { this.data = data; } @@ -33,122 +33,143 @@ } public static class DataModel { - private String alarmCode; - private String deviceStatus; - private String direction; - private String gas; - private String id; - private String isAlarm; - private String lagitude; - private String longitude; - private String pitch; - private String position; - private String speed; - private String taskId; - private String ts; + private List rows; + private Integer total; - public String getAlarmCode() { - return alarmCode; + public List getRows() { + return rows; } - public void setAlarmCode(String alarmCode) { - this.alarmCode = alarmCode; + public void setRows(List rows) { + this.rows = rows; } - public String getDeviceStatus() { - return deviceStatus; + public Integer getTotal() { + return total; } - public void setDeviceStatus(String deviceStatus) { - this.deviceStatus = deviceStatus; + public void setTotal(Integer total) { + this.total = total; } - public String getDirection() { - return direction; - } + public static class RowsModel { + private String alarmCode; + private String deviceStatus; + private String direction; + private String gas; + private String id; + private String isAlarm; + private String lagitude; + private String longitude; + private String pitch; + private String position; + private String speed; + private String taskId; + private String ts; - public void setDirection(String direction) { - this.direction = direction; - } + public String getAlarmCode() { + return alarmCode; + } - public String getGas() { - return gas; - } + public void setAlarmCode(String alarmCode) { + this.alarmCode = alarmCode; + } - public void setGas(String gas) { - this.gas = gas; - } + public String getDeviceStatus() { + return deviceStatus; + } - public String getId() { - return id; - } + public void setDeviceStatus(String deviceStatus) { + this.deviceStatus = deviceStatus; + } - public void setId(String id) { - this.id = id; - } + public String getDirection() { + return direction; + } - public String getIsAlarm() { - return isAlarm; - } + public void setDirection(String direction) { + this.direction = direction; + } - public void setIsAlarm(String isAlarm) { - this.isAlarm = isAlarm; - } + public String getGas() { + return gas; + } - public String getLagitude() { - return lagitude; - } + public void setGas(String gas) { + this.gas = gas; + } - public void setLagitude(String lagitude) { - this.lagitude = lagitude; - } + public String getId() { + return id; + } - public String getLongitude() { - return longitude; - } + public void setId(String id) { + this.id = id; + } - public void setLongitude(String longitude) { - this.longitude = longitude; - } + public String getIsAlarm() { + return isAlarm; + } - public String getPitch() { - return pitch; - } + public void setIsAlarm(String isAlarm) { + this.isAlarm = isAlarm; + } - public void setPitch(String pitch) { - this.pitch = pitch; - } + public String getLagitude() { + return lagitude; + } - public String getPosition() { - return position; - } + public void setLagitude(String lagitude) { + this.lagitude = lagitude; + } - public void setPosition(String position) { - this.position = position; - } + public String getLongitude() { + return longitude; + } - public String getSpeed() { - return speed; - } + public void setLongitude(String longitude) { + this.longitude = longitude; + } - public void setSpeed(String speed) { - this.speed = speed; - } + public String getPitch() { + return pitch; + } - public String getTaskId() { - return taskId; - } + public void setPitch(String pitch) { + this.pitch = pitch; + } - public void setTaskId(String taskId) { - this.taskId = taskId; - } + public String getPosition() { + return position; + } - public String getTs() { - return ts; - } + public void setPosition(String position) { + this.position = position; + } - public void setTs(String ts) { - this.ts = ts; + public String getSpeed() { + return speed; + } + + public void setSpeed(String speed) { + this.speed = speed; + } + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public String getTs() { + return ts; + } + + public void setTs(String ts) { + this.ts = ts; + } } } } diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt index 1fe8204..8fa87a2 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitService.kt @@ -91,10 +91,12 @@ /** * 任务详情 */ - @POST("/system/busPatrolTask/detail") + @POST("/system/busPatrolTrack/listPage") suspend fun getTaskDetail( @Header("token") token: String, - @Body requestBody: RequestBody + @Body requestBody: RequestBody, + @QueryMap limit: Map, + @QueryMap offset: Map ): String /** diff --git a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt index 8aee206..6aa7556 100644 --- a/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/ktd/retrofit/RetrofitServiceManager.kt @@ -138,13 +138,35 @@ /** * 任务详情 */ - suspend fun getTaskDetail(taskId: String): String { + suspend fun getTaskDetail( + taskId: String, + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int + ): String { val param = JsonObject() - param.addProperty("id", taskId) + param.addProperty("beginDate", beginDate) + param.addProperty("endDate", endDate) + param.addProperty("isAlarm", isAlarm) + param.addProperty("gas1", gas1) + param.addProperty("gas2", gas2) + param.addProperty("position", position) + param.addProperty("taskId", taskId) + val requestBody = param.toString().toRequestBody( "application/json;charset=UTF-8".toMediaType() ) - return api.getTaskDetail(AuthenticationHelper.token, requestBody) + + val limitMap = HashMap() + limitMap["limit"] = LocaleConstant.PAGE_LIMIT + + val offsetMap = HashMap() + offsetMap["offset"] = offset + return api.getTaskDetail(AuthenticationHelper.token, requestBody, limitMap, offsetMap) } /** diff --git a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt index 613429f..de865bc 100644 --- a/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt +++ b/app/src/main/java/com/casic/br/ktd/view/TaskDetailActivity.kt @@ -1,26 +1,37 @@ package com.casic.br.ktd.view import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.View import android.view.inputmethod.EditorInfo import android.widget.AdapterView import androidx.lifecycle.ViewModelProvider import com.casic.br.ktd.adapter.TaskDetailAdapter import com.casic.br.ktd.databinding.ActivityTaskDetailBinding +import com.casic.br.ktd.model.TaskDetailModel import com.casic.br.ktd.vm.TaskViewModel import com.casic.br.ktd.widgets.DateRangeActionSheet import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant +import com.pengxh.kt.lite.utils.WeakReferenceHandler -//TODO 查询条件待定 -class TaskDetailActivity : KotlinBaseActivity() { +class TaskDetailActivity : KotlinBaseActivity(), Handler.Callback { private val kTag = "TaskDetailActivity" + private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var taskViewModel: TaskViewModel private lateinit var taskId: String + private lateinit var taskDetailAdapter: TaskDetailAdapter private var startTime = "" private var endTime = "" + private var isAlarm = "" + private var page = 0 + private var isRefresh = false + private var isLoadMore = false + private var dataBeans: MutableList = ArrayList() override fun initEvent() { binding.calendarView.setOnClickListener { @@ -33,44 +44,34 @@ binding.selectedDateView.text = "$startDate ~ $endDate" - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } }).build().show() } //键盘搜索 - binding.gasValueView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.maxValueView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - textView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } binding.handleStateView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - binding.taskLocationView.text.toString() - ) + override fun onItemSelected( + adapterView: AdapterView<*>?, view: View?, i: Int, l: Long + ) { + isAlarm = if (i == 0) { + "1" + } else { + "0" + } + + page = 1 + getTaskDetailByPage() } override fun onNothingSelected(p0: AdapterView<*>?) { @@ -79,16 +80,10 @@ } //键盘搜索 - binding.taskLocationView.setOnEditorActionListener { textView, arg, keyEvent -> + binding.taskLocationView.setOnEditorActionListener { _, arg, _ -> if (arg == EditorInfo.IME_ACTION_SEARCH) { - taskViewModel.getTaskDetail( - taskId, - startTime, - endTime, - binding.gasValueView.text.toString(), - "", - textView.text.toString() - ) + page = 1 + getTaskDetailByPage() } false } @@ -96,35 +91,97 @@ binding.resetParamView.setOnClickListener { startTime = "" endTime = "" - binding.gasValueView.setText("") + binding.minValueView.setText("") + binding.maxValueView.setText("") binding.handleStateView.setSelection(0) binding.taskLocationView.setText("") + page = 1 - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + page = 1 + getTaskDetailByPage() + } + + binding.taskDetailLayout.setOnLoadMoreListener { + isLoadMore = true + page++ + getTaskDetailByPage() } } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) + taskId = intent.getStringExtra(Constant.INTENT_PARAM)!! taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java] - taskViewModel.getTaskDetail(taskId, "", "", "", "", "") taskViewModel.detailResult.observe(this) { if (it.code == 200) { - if (it.data.size == 0) { - binding.taskDetailView.visibility = View.GONE - binding.emptyInclude.emptyLayout.visibility = View.VISIBLE - } else { - binding.taskDetailView.visibility = View.VISIBLE - binding.emptyInclude.emptyLayout.visibility = View.GONE + val dataRows = it.data?.rows!! + when { + isRefresh -> { + taskDetailAdapter.setRefreshData(dataRows) + binding.taskDetailLayout.finishRefresh() + isRefresh = false + } - val taskDetailAdapter = TaskDetailAdapter(this, it.data) - binding.taskDetailView.adapter = taskDetailAdapter + isLoadMore -> { + if (dataRows.size == 0) { + "到底了,别拉了".show(this) + } + taskDetailAdapter.setLoadMoreData(dataRows) + binding.taskDetailLayout.finishLoadMore() + isLoadMore = false + } + + else -> { + dataBeans = dataRows + weakReferenceHandler.sendEmptyMessage(2023091201) + } } } } } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == 2023091201) { + if (dataBeans.size == 0) { + binding.taskDetailView.visibility = View.GONE + binding.emptyInclude.emptyLayout.visibility = View.VISIBLE + } else { + binding.taskDetailView.visibility = View.VISIBLE + binding.emptyInclude.emptyLayout.visibility = View.GONE + + taskDetailAdapter = TaskDetailAdapter(this, dataBeans) + binding.taskDetailView.adapter = taskDetailAdapter + } + } + return true + } + + override fun onResume() { + super.onResume() + getTaskDetailByPage() + } + + private fun getTaskDetailByPage() { + taskViewModel.getTaskDetail( + taskId, + startTime, + endTime, + binding.minValueView.text.toString(), + binding.maxValueView.text.toString(), + isAlarm, + binding.taskLocationView.text.toString(), + page + ) + } + override fun initViewBinding(): ActivityTaskDetailBinding { return ActivityTaskDetailBinding.inflate(layoutInflater) } diff --git a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt index df3a25b..9d146f4 100644 --- a/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt +++ b/app/src/main/java/com/casic/br/ktd/vm/TaskViewModel.kt @@ -68,13 +68,17 @@ fun getTaskDetail( taskId: String, - a: String, - b: String, - c: String, - d: String, - e: String + beginDate: String, + endDate: String, + gas1: String, + gas2: String, + isAlarm: String, + position: String, + offset: Int ) = launch({ - val response = RetrofitServiceManager.getTaskDetail(taskId) + val response = RetrofitServiceManager.getTaskDetail( + taskId, beginDate, endDate, gas1, gas2, isAlarm, position, offset + ) val responseCode = response.separateResponseCode() if (responseCode == 200) { detailResult.value = gson.fromJson( diff --git a/app/src/main/res/layout/activity_task_detail.xml b/app/src/main/res/layout/activity_task_detail.xml index b78ee6e..11bf309 100644 --- a/app/src/main/res/layout/activity_task_detail.xml +++ b/app/src/main/res/layout/activity_task_detail.xml @@ -53,16 +53,42 @@ app:cardElevation="@dimen/dp_2" app:cardUseCompatPadding="true"> - + android:orientation="horizontal"> + + + + + + + - + android:layout_height="match_parent"> + + + + + + + - - - - - - @@ -79,20 +69,9 @@ - -