diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_alarm_rv.xml b/app/src/main/res/layout/item_alarm_rv.xml deleted file mode 100644 index 1eaba64..0000000 --- a/app/src/main/res/layout/item_alarm_rv.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_alarm_rv.xml b/app/src/main/res/layout/item_alarm_rv.xml deleted file mode 100644 index 1eaba64..0000000 --- a/app/src/main/res/layout/item_alarm_rv.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_device_rv.xml b/app/src/main/res/layout/item_device_rv.xml index c63b3bd..9542c7d 100644 --- a/app/src/main/res/layout/item_device_rv.xml +++ b/app/src/main/res/layout/item_device_rv.xml @@ -36,11 +36,11 @@ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_alarm_rv.xml b/app/src/main/res/layout/item_alarm_rv.xml deleted file mode 100644 index 1eaba64..0000000 --- a/app/src/main/res/layout/item_alarm_rv.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_device_rv.xml b/app/src/main/res/layout/item_device_rv.xml index c63b3bd..9542c7d 100644 --- a/app/src/main/res/layout/item_device_rv.xml +++ b/app/src/main/res/layout/item_device_rv.xml @@ -36,11 +36,11 @@ diff --git a/app/src/main/res/layout/item_group_over_view_rv.xml b/app/src/main/res/layout/item_group_over_view_rv.xml new file mode 100644 index 0000000..c604563 --- /dev/null +++ b/app/src/main/res/layout/item_group_over_view_rv.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_alarm_rv.xml b/app/src/main/res/layout/item_alarm_rv.xml deleted file mode 100644 index 1eaba64..0000000 --- a/app/src/main/res/layout/item_alarm_rv.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_device_rv.xml b/app/src/main/res/layout/item_device_rv.xml index c63b3bd..9542c7d 100644 --- a/app/src/main/res/layout/item_device_rv.xml +++ b/app/src/main/res/layout/item_device_rv.xml @@ -36,11 +36,11 @@ diff --git a/app/src/main/res/layout/item_group_over_view_rv.xml b/app/src/main/res/layout/item_group_over_view_rv.xml new file mode 100644 index 0000000..c604563 --- /dev/null +++ b/app/src/main/res/layout/item_group_over_view_rv.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_group_rv.xml b/app/src/main/res/layout/item_group_rv.xml index a302d67..74a6783 100644 --- a/app/src/main/res/layout/item_group_rv.xml +++ b/app/src/main/res/layout/item_group_rv.xml @@ -2,10 +2,8 @@ + android:padding="@dimen/dp_5"> + android:text="@string/app_name" /> + android:text="99" /> + android:layout_marginEnd="0dp" + android:src="@mipmap/well_location" /> \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26d9a8f..78c969d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,6 @@ android:screenOrientation="landscape" /> - -) : RecyclerView.Adapter() { - - private val layoutInflater: LayoutInflater = LayoutInflater.from(context) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { - return ItemViewHolder( - layoutInflater.inflate(R.layout.item_alarm_rv, parent, false) - ) - } - - override fun getItemCount(): Int = dataRows.size - - override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - //绑定数据 - val rowsBean = dataRows[position] - holder.alarmMessageView.text = rowsBean.alarmMessage - val alarmValue = if (rowsBean.alarmValue.toString().isBlank()) { - "报警值:未知" - } else { - "报警值:" + rowsBean.alarmValue - } - holder.alarmValueView.text = alarmValue - holder.wellCodeView.text = String.format("井编号:${rowsBean.wellCode}") - holder.devCodeView.text = String.format("设备编号:${rowsBean.devcode}") - holder.wellLocationView.text = String.format("井位置:${rowsBean.position}") - holder.createTimeView.text = String.format("报警时间:${rowsBean.alarmTime}") - //绑定事件 - if (listener != null) { - holder.itemView.setOnClickListener { - listener!!.onClicked(position) - } - } - } - - inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { - var alarmMessageView: TextView = view.findViewById(R.id.alarmMessageView) - var alarmValueView: TextView = view.findViewById(R.id.alarmValueView) - var wellCodeView: TextView = view.findViewById(R.id.wellCodeView) - var devCodeView: TextView = view.findViewById(R.id.devCodeView) - var wellLocationView: TextView = view.findViewById(R.id.wellLocationView) - var createTimeView: TextView = view.findViewById(R.id.createTimeView) - } - - private var listener: OnItemClickListener? = null - - interface OnItemClickListener { - fun onClicked(position: Int) - } - - fun setOnItemClickListener(onClickListener: OnItemClickListener?) { - this.listener = onClickListener - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt index 12f1e79..388948e 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/DeviceListAdapter.kt @@ -32,7 +32,7 @@ val rowsBean = dataRows[position] holder.batteryView.setBackgroundResource(rowsBean.cell.toBatteryImage()) holder.deviceCodeView.text = rowsBean.deviceCode - holder.wellNameView.text = String.format("设备名:${rowsBean.deviceName}") +// holder.wellNameView.text = String.format("位置:${rowsBean}") holder.batteryDataView.text = if (rowsBean.cell.isNullOrBlank()) { "0%" } else { @@ -59,7 +59,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var batteryView: ImageView = view.findViewById(R.id.batteryView) var deviceCodeView: TextView = view.findViewById(R.id.deviceCodeView) - var wellNameView: TextView = view.findViewById(R.id.wellNameView) + var locationView: TextView = view.findViewById(R.id.locationView) var batteryDataView: TextView = view.findViewById(R.id.batteryDataView) var snrDataView: TextView = view.findViewById(R.id.snrDataView) var pciDataView: TextView = view.findViewById(R.id.pciDataView) diff --git a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt index 6e74091..dfd6b8d 100644 --- a/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt +++ b/app/src/main/java/com/casic/smarttube/adapter/GroupListAdapter.kt @@ -47,7 +47,8 @@ GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { if (rCode == 1000) { - holder.groupLocationView.text = result?.regeocodeAddress?.formatAddress + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") } } @@ -56,7 +57,7 @@ } }) } - holder.installDateView.text = rowsBean.installDate + holder.deviceNumView.text = String.format("管理设备数:${5}") //绑定事件 if (listener != null) { @@ -69,7 +70,7 @@ inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { var groupNameView: TextView = view.findViewById(R.id.groupNameView) var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) - var installDateView: TextView = view.findViewById(R.id.installDateView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) } private var listener: OnItemClickListener? = null diff --git a/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt new file mode 100644 index 0000000..d0b8760 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/adapter/OverviewGroupListAdapter.kt @@ -0,0 +1,85 @@ +package com.casic.smarttube.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +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.smarttube.R +import com.casic.smarttube.model.ProjectGroupModel + +class OverviewGroupListAdapter( + context: Context, private val dataRows: MutableList +) : RecyclerView.Adapter() { + + private val geocoderSearch by lazy { GeocodeSearch(context) } + private val layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder { + return ItemViewHolder( + layoutInflater.inflate(R.layout.item_group_over_view_rv, parent, false) + ) + } + + override fun getItemCount(): Int = dataRows.size + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + //绑定数据 + val rowsBean = dataRows[position] + + holder.groupNameView.text = String.format("项目编号:${rowsBean.groupId}") + if (rowsBean.latGaode.isBlank() || rowsBean.lngGaode.isBlank()) { + holder.groupLocationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(rowsBean.latGaode.toDouble(), rowsBean.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + holder.groupLocationView.text = + String.format("项目位置:${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + holder.deviceNumView.text = String.format("管理设备数:${5}") + + //绑定事件 + if (listener != null) { + holder.itemView.setOnClickListener { + listener!!.onClicked(position) + } + } + } + + inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var groupNameView: TextView = view.findViewById(R.id.groupNameView) + var groupLocationView: TextView = view.findViewById(R.id.groupLocationView) + var deviceNumView: TextView = view.findViewById(R.id.deviceNumView) + } + + private var listener: OnItemClickListener? = null + + interface OnItemClickListener { + fun onClicked(position: Int) + } + + fun setOnItemClickListener(onClickListener: OnItemClickListener?) { + this.listener = onClickListener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt index 2682834..c41379a 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt @@ -1,29 +1,29 @@ package com.casic.smarttube.fragment +import android.view.View import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.casic.smarttube.R -import com.casic.smarttube.adapter.GroupListAdapter +import com.casic.smarttube.adapter.OverviewGroupListAdapter import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.view.AlarmManagementActivity import com.casic.smarttube.view.GroupDeviceActivity import com.casic.smarttube.vm.ProjectGroupViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import kotlinx.android.synthetic.main.fragment_overview.* +import kotlinx.android.synthetic.main.include_base_title.* import kotlinx.android.synthetic.main.include_empty_view.* class OverviewFragment : KotlinBaseFragment() { private lateinit var groupViewModel: ProjectGroupViewModel - private lateinit var groupListAdapter: GroupListAdapter + private lateinit var groupListAdapter: OverviewGroupListAdapter override fun initLayoutView(): Int = R.layout.fragment_overview override fun setupTopBarLayout() { - rightOptionView.setOnClickListener { - requireContext().navigatePageTo() - } + leftBackView.visibility = View.GONE + titleView.text = "概览" } override fun initData() { @@ -44,11 +44,11 @@ } } else { emptyView!!.hide() - groupListAdapter = GroupListAdapter(requireContext(), it.data) + groupListAdapter = OverviewGroupListAdapter(requireContext(), it.data) groupRecyclerView!!.layoutManager = LinearLayoutManager(requireContext()) groupRecyclerView!!.adapter = groupListAdapter groupListAdapter.setOnItemClickListener(object : - GroupListAdapter.OnItemClickListener { + OverviewGroupListAdapter.OnItemClickListener { override fun onClicked(position: Int) { // 根据groupId查询组下设备 requireContext().navigatePageTo(it.data[position].groupId) diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java deleted file mode 100644 index ad0ea56..0000000 --- a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.casic.smarttube.model; - -import java.util.List; - -public class AlarmListModel { - - private int code; - private DataBean data; - private String message; - private boolean success; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataBean getData() { - return data; - } - - public void setData(DataBean data) { - this.data = data; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public boolean isSuccess() { - return success; - } - - public void setSuccess(boolean success) { - this.success = success; - } - - public static class DataBean { - private List rows; - private int total; - - public List getRows() { - return rows; - } - - public void setRows(List rows) { - this.rows = rows; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public static class RowsBean { - private int alarmContent; - private String deptName; - private String jobStatus; - private String alarmContentName; - private String wellCode; - private String alarmTime; - private String deptid; - private String alarmTypeName; - private String alarmMessage; - private String staff; - private String deviceId; - private String jobId; - private String jobStatusName; - private String alarmType; - private String alarmValue; - private String devcode; - private String statusName; - private String alarmLevel; - private String tel; - private String id; - private String wellId; - private String position; - private String status; - - public int getAlarmContent() { - return alarmContent; - } - - public void setAlarmContent(int alarmContent) { - this.alarmContent = alarmContent; - } - - public String getDeptName() { - return deptName; - } - - public void setDeptName(String deptName) { - this.deptName = deptName; - } - - public String getJobStatus() { - return jobStatus; - } - - public void setJobStatus(String jobStatus) { - this.jobStatus = jobStatus; - } - - public String getAlarmContentName() { - return alarmContentName; - } - - public void setAlarmContentName(String alarmContentName) { - this.alarmContentName = alarmContentName; - } - - public String getWellCode() { - return wellCode; - } - - public void setWellCode(String wellCode) { - this.wellCode = wellCode; - } - - public String getAlarmTime() { - return alarmTime; - } - - public void setAlarmTime(String alarmTime) { - this.alarmTime = alarmTime; - } - - public String getDeptid() { - return deptid; - } - - public void setDeptid(String deptid) { - this.deptid = deptid; - } - - public String getAlarmTypeName() { - return alarmTypeName; - } - - public void setAlarmTypeName(String alarmTypeName) { - this.alarmTypeName = alarmTypeName; - } - - public String getAlarmMessage() { - return alarmMessage; - } - - public void setAlarmMessage(String alarmMessage) { - this.alarmMessage = alarmMessage; - } - - public String getStaff() { - return staff; - } - - public void setStaff(String staff) { - this.staff = staff; - } - - public String getDeviceId() { - return deviceId; - } - - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; - } - - public String getJobId() { - return jobId; - } - - public void setJobId(String jobId) { - this.jobId = jobId; - } - - public String getJobStatusName() { - return jobStatusName; - } - - public void setJobStatusName(String jobStatusName) { - this.jobStatusName = jobStatusName; - } - - public String getAlarmType() { - return alarmType; - } - - public void setAlarmType(String alarmType) { - this.alarmType = alarmType; - } - - public String getAlarmValue() { - return alarmValue; - } - - public void setAlarmValue(String alarmValue) { - this.alarmValue = alarmValue; - } - - public String getDevcode() { - return devcode; - } - - public void setDevcode(String devcode) { - this.devcode = devcode; - } - - public String getStatusName() { - return statusName; - } - - public void setStatusName(String statusName) { - this.statusName = statusName; - } - - public String getAlarmLevel() { - return alarmLevel; - } - - public void setAlarmLevel(String alarmLevel) { - this.alarmLevel = alarmLevel; - } - - public String getTel() { - return tel; - } - - public void setTel(String tel) { - this.tel = tel; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getWellId() { - return wellId; - } - - public void setWellId(String wellId) { - this.wellId = wellId; - } - - public String getPosition() { - return position; - } - - public void setPosition(String position) { - this.position = position; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt index f29fbb6..8917d0c 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitService.kt @@ -171,25 +171,6 @@ ): String /** - * 告警列表 - */ - @GET("/alarm/list") - suspend fun obtainAlarmListByPage( - @Header("token") token: String, - @Query("keywords") keywords: String, - @Query("alarmType") alarmType: String, - @Query("areaId") areaId: String, - @Query("alarmContentType") alarmContentType: String, - @Query("beginTime") beginTime: String, - @Query("endTime") endTime: String, - @Query("status") status: String, - @Query("sort") sort: String, - @Query("order") order: String, - @Query("offset") offset: Int, - @Query("limit") limit: Int - ): String - - /** * 获取设备最新数据 * * @param devcode 管盯设备编号 diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt index 1d2b13d..824e47b 100644 --- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitServiceManager.kt @@ -141,35 +141,6 @@ } /** - * 告警列表 - */ - suspend fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ): String { - return api.obtainAlarmListByPage( - AuthenticationHelper.token!!, - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - "alarmValue", - "desc", - page, - LocaleConstant.PAGE_LIMIT - ) - } - - /** * 上传图片 */ suspend fun uploadImage(image: File): String { diff --git a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt deleted file mode 100644 index 4e374ed..0000000 --- a/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt +++ /dev/null @@ -1,129 +0,0 @@ -package com.casic.smarttube.view - -import android.os.Handler -import androidx.lifecycle.ViewModelProvider -import androidx.recyclerview.widget.LinearLayoutManager -import com.casic.smarttube.R -import com.casic.smarttube.adapter.AlarmListAdapter -import com.casic.smarttube.extensions.showEmptyPage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.vm.AlarmViewModel -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import com.pengxh.kt.lite.utils.WeakReferenceHandler -import kotlinx.android.synthetic.main.activity_alarm_management.* -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView -import kotlinx.android.synthetic.main.include_base_title.* -import kotlinx.android.synthetic.main.include_empty_view.* - - -class AlarmManagementActivity : KotlinBaseActivity() { - - private lateinit var alarmViewModel: AlarmViewModel - private lateinit var weakReferenceHandler: WeakReferenceHandler - private lateinit var alarmListAdapter: AlarmListAdapter - private var dataBeans: MutableList = ArrayList() - private var pageIndex = 1 - private var isRefresh = false - private var isLoadMore = false - - override fun initLayoutView(): Int = R.layout.activity_alarm_management - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(false).init() - ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) - leftBackView.setOnClickListener { finish() } - titleView.text = "当前告警" - } - - override fun initData() { - weakReferenceHandler = WeakReferenceHandler(callback) - alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) - } - - override fun onResume() { - obtainAlarmListByPage() - super.onResume() - } - - override fun initEvent() { - alarmListLayout.setOnRefreshListener { - isRefresh = true - //刷新之后页码重置 - pageIndex = 1 - obtainAlarmListByPage() - } - alarmListLayout.setOnLoadMoreListener { - isLoadMore = true - pageIndex++ - obtainAlarmListByPage() - } - - alarmViewModel.listModel.observe(this, { - if (it.code == 200) { - val dataRows = it.data?.rows - when { - isRefresh -> { - dataBeans.clear() - dataBeans = dataRows!! - alarmListLayout.finishRefresh() - isRefresh = false - } - isLoadMore -> { - if (dataRows?.size == 0) { - "到底了,别拉了".show(this) - } - dataBeans.addAll(dataRows!!) - alarmListLayout.finishLoadMore() - isLoadMore = false - } - else -> { - dataBeans = dataRows!! - } - } - weakReferenceHandler.sendEmptyMessage(2022062501) - } - }) - } - - private fun obtainAlarmListByPage() { - alarmViewModel.obtainAlarmListByPage("", "", "", "", "", "", "1", pageIndex) - } - - private val callback = Handler.Callback { - if (it.what == 2022062501) { - if (isRefresh || isLoadMore) { - alarmListAdapter.notifyDataSetChanged() - } else { //首次加载数据 - if (dataBeans.size == 0) { - emptyView!!.showEmptyPage { - pageIndex = 1 - obtainAlarmListByPage() - } - } else { - emptyView!!.hide() - alarmListAdapter = AlarmListAdapter(this, dataBeans) - alarmListView!!.layoutManager = LinearLayoutManager(this) - alarmListView!!.adapter = alarmListAdapter - alarmListAdapter.setOnItemClickListener(object : - AlarmListAdapter.OnItemClickListener { - override fun onClicked(position: Int) { - val wellId = dataBeans[position].wellId.toString() - if (wellId.isBlank()) { - "井编号异常,无法查看详情".show(this@AlarmManagementActivity) - return - } - navigatePageTo(wellId) - } - }) - } - } - } - true - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 7c4a47a..68078bb 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -1,5 +1,6 @@ package com.casic.smarttube.view +import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.services.core.LatLonPoint import com.amap.api.services.geocoder.GeocodeResult @@ -10,8 +11,11 @@ import com.casic.smarttube.utils.DialogManager import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -66,6 +70,32 @@ } }) } + //TODO 描述 + + //TODO 图片 +// if (orderDetail.firstStatePhotos.toString().isBlank()) { +// imageGridView.visibility = View.GONE +// } else { +// imageGridView.visibility = View.VISIBLE +// //处理图片地址 +// val urls: ArrayList = ArrayList() +// val imageArray = orderDetail.firstStatePhotos.toString().split(",") +// imageArray.forEach { path -> +// if (path.isNotBlank()) { +// urls.add(path.combineImagePath()) +// } +// } +// val imageAdapter = ReadOnlyImageAdapter(this) +// imageAdapter.setImageList(urls) +// imageGridView.adapter = imageAdapter +// imageGridView.setOnItemClickListener { _, _, position, _ -> +// if (urls[position].isEmpty()) { +// "图片加载失败,无法查看大图".show(this) +// } else { +// navigatePageTo(position, urls) +// } +// } +// } densityView.text = device.stregnth lastDataView.text = device.uptime diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index 4e9b844..68a68d6 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -18,8 +18,6 @@ import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState -import kotlinx.android.synthetic.main.activity_alarm_management.leftBackView -import kotlinx.android.synthetic.main.activity_alarm_management.titleView import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.include_empty_view.* @@ -42,7 +40,6 @@ ImmersionBar.with(this).statusBarDarkFont(false).init() ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this)) leftBackView.setOnClickListener { finish() } - titleView.text = "设备列表" rightOptionView.setOnClickListener { order = if (order == 0) { 1 @@ -56,6 +53,7 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! + titleView.text = String.format(groupId + "项目设备列表") dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) @@ -110,6 +108,7 @@ } private fun obtainDeviceListByPage() { + //TODO http://111.198.10.15:11311/tube/groupdevice/listpage?wellGroupId=203&order=0&offset=1&limit=20 新增经纬度字段 groupViewModel.obtainDeviceListByPage(groupId, order, pageIndex) } diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt deleted file mode 100644 index f4461f4..0000000 --- a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.casic.smarttube.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.smarttube.base.BaseApplication -import com.casic.smarttube.extensions.separateResponseCode -import com.casic.smarttube.extensions.toErrorMessage -import com.casic.smarttube.model.AlarmListModel -import com.casic.smarttube.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel - -class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val listModel = MutableLiveData() - - fun obtainAlarmListByPage( - keywords: String, - alarmType: String, - areaId: String, - alarmContentType: String, - beginTime: String, - endTime: String, - status: String, - page: Int - ) = launch({ - val response = RetrofitServiceManager.obtainAlarmListByPage( - keywords, - alarmType, - areaId, - alarmContentType, - beginTime, - endTime, - status, - page - ) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - listModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - response.toErrorMessage().show(BaseApplication.obtainInstance()) - } - }, { - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt index 71b14d5..4c5ac01 100644 --- a/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/WellViewModel.kt @@ -17,13 +17,6 @@ private val gson = Gson() val detailModel = MutableLiveData() -// val allWellModel = MutableLiveData() -// val countResultModel = MutableLiveData>() -// val wellTypeAndCountModel = MutableLiveData() -// val wellListPageModel = MutableLiveData() -// val wellTypeModel = MutableLiveData() -// val deviceDataModel = MutableLiveData() -// val commonResultModel = MutableLiveData() fun obtainWellDetail(id: String) = launch({ loadState.value = LoadState.Loading @@ -42,168 +35,4 @@ loadState.value = LoadState.Fail it.printStackTrace() }) - -// fun obtainAllWell() = launch({ -// val response = RetrofitServiceManager.obtainAllWell() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// allWellModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun countWellByState() = launch({ -// val response = RetrofitServiceManager.countWellByState() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// val map = HashMap(3) -// -// val jsonObject = JSONObject(response) -// val data = jsonObject.getJSONObject("data") -// map["bfWell"] = data.getString("bfWell") -// map["cfWell"] = data.getString("cfWell") -// map["total"] = data.getString("total") -// countResultModel.value = map -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellTypeAndCount() = launch({ -// val response = RetrofitServiceManager.obtainWellTypeAndCount() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeAndCountModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellPageList(keywords: String?, wellType: String?, deptid: String?, offset: Int) = -// launch({ -// val response = -// RetrofitServiceManager.obtainWellPageList(keywords, wellType, deptid, offset) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellListPageModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainWellType() = launch({ -// val response = RetrofitServiceManager.obtainWellType() -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// wellTypeModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainDeviceDataByWell(id: String) = launch({ -// val response = RetrofitServiceManager.obtainDeviceDataByWell(id) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// deviceDataModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// response.toErrorMessage().show() -// } -// }, { -// it.printStackTrace() -// }) -// -// fun obtainOperationResult(id: String, state: String) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.obtainOperationResult(id, state) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "操作成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) -// -// /** -// * 编辑更新井信息 -// * */ -// fun updateWellDetail( -// id: String, -// wellCode: String, -// wellName: String, -// wellType: String, -// deptid: String, -// deep: String, -// position: String, -// coordinateX: String, -// coordinateY: String, -// photos: String, -// notes: String?, -// qu: String, -// area: String, -// responsibleDept: String, -// responsibleDeptName: String -// ) = launch({ -// loadState.value = LoadState.Loading -// val response = RetrofitServiceManager.updateWellDetail( -// id, -// wellCode, -// wellName, -// wellType, -// deptid, -// deep, -// position, -// coordinateX, -// coordinateY, -// photos, -// notes, -// qu, -// area, -// responsibleDept, -// responsibleDeptName -// ) -// val responseCode = response.separateResponseCode() -// if (responseCode == 200) { -// loadState.value = LoadState.Success -// "更新成功".show() -// commonResultModel.value = gson.fromJson( -// response, object : TypeToken() {}.type -// ) -// } else { -// loadState.value = LoadState.Fail -// response.toErrorMessage().show() -// } -// }, { -// loadState.value = LoadState.Fail -// it.printStackTrace() -// }) } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml deleted file mode 100644 index 018a29c..0000000 --- a/app/src/main/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_alarm_management.xml b/app/src/main/res/layout/activity_alarm_management.xml deleted file mode 100644 index 5b7215a..0000000 --- a/app/src/main/res/layout/activity_alarm_management.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_detail.xml b/app/src/main/res/layout/activity_device_detail.xml index 9aa27ae..389f052 100644 --- a/app/src/main/res/layout/activity_device_detail.xml +++ b/app/src/main/res/layout/activity_device_detail.xml @@ -96,6 +96,7 @@ @@ -103,8 +104,42 @@ android:id="@+id/locationView" style="@style/RelativeTextViewStyle" android:layout_alignParentEnd="true" + android:layout_toEndOf="@id/locationTempView" android:text="@string/unknown" /> + + + + + + + + + + + + + + + - - - - - - + + android:layout_marginTop="@dimen/dp_5" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_data_excel.xml b/app/src/main/res/layout/include_data_excel.xml index c3dc153..e9f3c91 100644 --- a/app/src/main/res/layout/include_data_excel.xml +++ b/app/src/main/res/layout/include_data_excel.xml @@ -31,7 +31,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="SNR" + android:text="信噪比(SNR)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" - android:text="RSRP" + android:text="信号(RSRP)" android:textColor="@color/subTextColor" android:textSize="@dimen/sp_12" /> diff --git a/app/src/main/res/layout/item_alarm_rv.xml b/app/src/main/res/layout/item_alarm_rv.xml deleted file mode 100644 index 1eaba64..0000000 --- a/app/src/main/res/layout/item_alarm_rv.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_device_rv.xml b/app/src/main/res/layout/item_device_rv.xml index c63b3bd..9542c7d 100644 --- a/app/src/main/res/layout/item_device_rv.xml +++ b/app/src/main/res/layout/item_device_rv.xml @@ -36,11 +36,11 @@ diff --git a/app/src/main/res/layout/item_group_over_view_rv.xml b/app/src/main/res/layout/item_group_over_view_rv.xml new file mode 100644 index 0000000..c604563 --- /dev/null +++ b/app/src/main/res/layout/item_group_over_view_rv.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_group_rv.xml b/app/src/main/res/layout/item_group_rv.xml index a302d67..74a6783 100644 --- a/app/src/main/res/layout/item_group_rv.xml +++ b/app/src/main/res/layout/item_group_rv.xml @@ -2,10 +2,8 @@ + android:padding="@dimen/dp_5"> + android:text="@string/app_name" /> + android:text="99" /> + android:layout_marginEnd="0dp" + android:src="@mipmap/well_location" /> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 085f3af..6aef601 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -58,7 +58,7 @@ true true @dimen/dp_10 - @drawable/ic_right + @drawable/ic_right