diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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 e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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 e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
suspend fun uploadImage(image: File): String {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ true
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ 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 e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
index 8c33d53..5e44b97 100644
--- a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
+++ b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
@@ -5,7 +5,7 @@
import com.casic.smarttube.extensions.separateResponseCode
import com.casic.smarttube.extensions.toErrorMessage
import com.casic.smarttube.model.UserDetailModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,13 +28,13 @@
response, object : TypeToken() {}.type
)
userDetailModel.value = userDetail
- SaveKeyValues.putValue(LocalConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
+ SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
} else {
val errorModel = UserDetailModel()
errorModel.code = responseCode
userDetailModel.value = errorModel
//如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录
- SaveKeyValues.removeKey(LocalConstant.USER_DETAIL_MODEL)
+ SaveKeyValues.removeKey(LocaleConstant.USER_DETAIL_MODEL)
}
}, {
it.printStackTrace()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
index 8c33d53..5e44b97 100644
--- a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
+++ b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
@@ -5,7 +5,7 @@
import com.casic.smarttube.extensions.separateResponseCode
import com.casic.smarttube.extensions.toErrorMessage
import com.casic.smarttube.model.UserDetailModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,13 +28,13 @@
response, object : TypeToken() {}.type
)
userDetailModel.value = userDetail
- SaveKeyValues.putValue(LocalConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
+ SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
} else {
val errorModel = UserDetailModel()
errorModel.code = responseCode
userDetailModel.value = errorModel
//如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录
- SaveKeyValues.removeKey(LocalConstant.USER_DETAIL_MODEL)
+ SaveKeyValues.removeKey(LocaleConstant.USER_DETAIL_MODEL)
}
}, {
it.printStackTrace()
diff --git a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
index 4fe46ee..4e47f09 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
@@ -6,7 +6,7 @@
import android.view.Gravity
import androidx.fragment.app.FragmentManager
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.pengxh.kt.lite.extensions.*
@@ -93,7 +93,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
@@ -112,7 +112,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
index 8c33d53..5e44b97 100644
--- a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
+++ b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
@@ -5,7 +5,7 @@
import com.casic.smarttube.extensions.separateResponseCode
import com.casic.smarttube.extensions.toErrorMessage
import com.casic.smarttube.model.UserDetailModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,13 +28,13 @@
response, object : TypeToken() {}.type
)
userDetailModel.value = userDetail
- SaveKeyValues.putValue(LocalConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
+ SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
} else {
val errorModel = UserDetailModel()
errorModel.code = responseCode
userDetailModel.value = errorModel
//如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录
- SaveKeyValues.removeKey(LocalConstant.USER_DETAIL_MODEL)
+ SaveKeyValues.removeKey(LocaleConstant.USER_DETAIL_MODEL)
}
}, {
it.printStackTrace()
diff --git a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
index 4fe46ee..4e47f09 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
@@ -6,7 +6,7 @@
import android.view.Gravity
import androidx.fragment.app.FragmentManager
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.pengxh.kt.lite.extensions.*
@@ -93,7 +93,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
@@ -112,7 +112,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
diff --git a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
index 379b932..c1f0c1d 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
@@ -15,7 +15,6 @@
private val decimalFormat = DecimalFormat("##0.0")
private val dayView: TextView = findViewById(R.id.dayView)
- private val factoryView: TextView = findViewById(R.id.factoryView)
private val dataView: TextView = findViewById(R.id.dataView)
private var xAxisDate: MutableList = ArrayList()
@@ -28,7 +27,6 @@
super.refreshContent(e, highlight)
val data = e.data as String
try {
- factoryView.text = data
dataView.text = String.format("数据:${decimalFormat.format(e.y.toString().toDouble())}t")
dayView.text = xAxisDate[(e.x).toInt()]
} catch (e1: Exception) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
index 8c33d53..5e44b97 100644
--- a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
+++ b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
@@ -5,7 +5,7 @@
import com.casic.smarttube.extensions.separateResponseCode
import com.casic.smarttube.extensions.toErrorMessage
import com.casic.smarttube.model.UserDetailModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,13 +28,13 @@
response, object : TypeToken() {}.type
)
userDetailModel.value = userDetail
- SaveKeyValues.putValue(LocalConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
+ SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
} else {
val errorModel = UserDetailModel()
errorModel.code = responseCode
userDetailModel.value = errorModel
//如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录
- SaveKeyValues.removeKey(LocalConstant.USER_DETAIL_MODEL)
+ SaveKeyValues.removeKey(LocaleConstant.USER_DETAIL_MODEL)
}
}, {
it.printStackTrace()
diff --git a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
index 4fe46ee..4e47f09 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
@@ -6,7 +6,7 @@
import android.view.Gravity
import androidx.fragment.app.FragmentManager
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.pengxh.kt.lite.extensions.*
@@ -93,7 +93,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
@@ -112,7 +112,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
diff --git a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
index 379b932..c1f0c1d 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
@@ -15,7 +15,6 @@
private val decimalFormat = DecimalFormat("##0.0")
private val dayView: TextView = findViewById(R.id.dayView)
- private val factoryView: TextView = findViewById(R.id.factoryView)
private val dataView: TextView = findViewById(R.id.dataView)
private var xAxisDate: MutableList = ArrayList()
@@ -28,7 +27,6 @@
super.refreshContent(e, highlight)
val data = e.data as String
try {
- factoryView.text = data
dataView.text = String.format("数据:${decimalFormat.format(e.y.toString().toDouble())}t")
dayView.text = xAxisDate[(e.x).toInt()]
} catch (e1: Exception) {
diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml
new file mode 100644
index 0000000..018a29c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_alarm.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e7a86a8..6b1132e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
+
+
+) : RecyclerView.Adapter() {
+
+ private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
+
+ override fun onCreateViewHolder(
+ parent: ViewGroup, viewType: Int
+ ): AlarmListAdapter.ItemViewHolder {
+ return ItemViewHolder(
+ layoutInflater.inflate(R.layout.item_alarm_recycleview, 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)
+ }
+ holder.operationButton.setChangeAlphaWhenPress(true)
+ holder.operationButton.setOnClickListener {
+ listener!!.onOperationClicked(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)
+ var operationButton: QMUIRoundButton = view.findViewById(R.id.operationButton)
+ }
+
+ private var listener: OnItemClickListener? = null
+
+ interface OnItemClickListener {
+ fun onClicked(position: Int)
+
+ fun onOperationClicked(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/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt
index efc2b5e..6b31524 100644
--- a/app/src/main/java/com/casic/smarttube/extensions/String.kt
+++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt
@@ -1,12 +1,11 @@
package com.casic.smarttube.extensions
import com.casic.smarttube.model.ErrorMessageModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.pengxh.kt.lite.utils.SaveKeyValues
import org.json.JSONObject
-import java.util.*
/**
* String扩展方法
@@ -31,7 +30,7 @@
fun String.appendDownloadUrl(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this}"
}
@@ -40,7 +39,7 @@
fun String.combineImagePath(): String {
if (this.isEmpty()) return this
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return "$defaultValue/static/${this.replace("\\", "/")}"
}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
index 974dd86..1618f24 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt
@@ -13,7 +13,7 @@
import com.casic.smarttube.model.UserDetailModel
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.view.AboutUsActivity
import com.casic.smarttube.view.LoginActivity
@@ -204,7 +204,7 @@
}
override fun onResume() {
- val userDetailJson = SaveKeyValues.getValue(LocalConstant.USER_DETAIL_MODEL, "") as String
+ val userDetailJson = SaveKeyValues.getValue(LocaleConstant.USER_DETAIL_MODEL, "") as String
if (userDetailJson.isNotBlank()) {
userData = Gson().fromJson(
userDetailJson, object : TypeToken() {}.type
@@ -271,7 +271,7 @@
val data: Uri
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
data = FileProvider.getUriForFile(
- requireContext(), LocalConstant.APP_AUTHORITY, apkPackage
+ requireContext(), LocaleConstant.APP_AUTHORITY, apkPackage
)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
} else {
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 5d4cc9d..405dca4 100644
--- a/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
+++ b/app/src/main/java/com/casic/smarttube/fragment/OverviewFragment.kt
@@ -3,10 +3,12 @@
import android.os.Handler
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.casic.smarttube.view.AlarmManagementActivity
import com.casic.smarttube.R
import com.casic.smarttube.adapter.DeviceListAdapter
import com.casic.smarttube.extensions.showEmptyPage
import com.casic.smarttube.model.DeviceListModel
+import com.casic.smarttube.view.DeviceDetailActivity
import com.casic.smarttube.view.HistoryDataActivity
import com.casic.smarttube.view.WellDetailActivity
import com.casic.smarttube.vm.DeviceViewModel
@@ -30,7 +32,9 @@
override fun initLayoutView(): Int = R.layout.fragment_overview
override fun setupTopBarLayout() {
-
+ rightOptionView.setOnClickListener {
+ requireContext().navigatePageTo()
+ }
}
override fun initData() {
@@ -106,12 +110,7 @@
deviceAdapter.setOnItemClickListener(object :
DeviceListAdapter.OnItemClickListener {
override fun onClicked(position: Int) {
-// val jobId = dataBeans[position].jobId.toString()
-// if (jobId.isBlank()) {
-// "设备编号异常,无法查看详情".show(requireContext())
-// return
-// }
-// requireContext().navigatePageTo(jobId)
+ requireContext().navigatePageTo(dataBeans[position].devcode)
}
override fun onHistoryClicked(position: Int) {
diff --git a/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
new file mode 100644
index 0000000..ddbcfcf
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/model/AlarmListModel.java
@@ -0,0 +1,274 @@
+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 int 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 int getAlarmLevel() {
+ return alarmLevel;
+ }
+
+ public void setAlarmLevel(int 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/LocalConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
deleted file mode 100644
index 4717635..0000000
--- a/app/src/main/java/com/casic/smarttube/utils/LocalConstant.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.casic.smarttube.utils
-
-import android.Manifest
-
-
-object LocalConstant {
- /**
- * =============================================================================================
- * Array
- * =============================================================================================
- * */
- val USER_PERMISSIONS = arrayOf(
- Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
- Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.READ_PHONE_STATE
- )
-
- /**
- * =============================================================================================
- * Int
- * =============================================================================================
- * */
- const val PERMISSIONS_CODE = 999
- const val PAGE_LIMIT = 20
-
- /**
- * =============================================================================================
- * Long
- * =============================================================================================
- * */
- const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
-
- /**
- * =============================================================================================
- * String
- * =============================================================================================
- * */
- const val USER_DETAIL_MODEL = "userDetailModel"
- const val SERVER_BASE_URL = "http://111.198.10.15:11304"
- const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
- const val ACCOUNT = "account"
- const val PASSWORD = "password"
- const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
new file mode 100644
index 0000000..c580688
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/utils/LocaleConstant.kt
@@ -0,0 +1,45 @@
+package com.casic.smarttube.utils
+
+import android.Manifest
+
+
+object LocaleConstant {
+ /**
+ * =============================================================================================
+ * Array
+ * =============================================================================================
+ * */
+ val USER_PERMISSIONS = arrayOf(
+ Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS,
+ Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
+ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.READ_PHONE_STATE
+ )
+
+ /**
+ * =============================================================================================
+ * Int
+ * =============================================================================================
+ * */
+ const val PERMISSIONS_CODE = 999
+ const val PAGE_LIMIT = 20
+
+ /**
+ * =============================================================================================
+ * Long
+ * =============================================================================================
+ * */
+ const val FIVE_YEARS = 5L * 365 * 60 * 60 * 24 * 1000L
+
+ /**
+ * =============================================================================================
+ * String
+ * =============================================================================================
+ * */
+ const val USER_DETAIL_MODEL = "userDetailModel"
+ const val SERVER_BASE_URL = "http://111.198.10.15:11304"
+ const val DEFAULT_SERVER_CONFIG = "defaultServerConfig"
+ const val ACCOUNT = "account"
+ const val PASSWORD = "password"
+ const val APP_AUTHORITY = "com.casic.smarttube.fileprovider"
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
index 660496f..446d848 100644
--- a/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
+++ b/app/src/main/java/com/casic/smarttube/utils/retrofit/RetrofitFactory.kt
@@ -1,7 +1,7 @@
package com.casic.smarttube.utils.retrofit;
import android.util.Log
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import com.pengxh.kt.lite.utils.SaveKeyValues
import okhttp3.OkHttpClient
@@ -19,7 +19,7 @@
fun createRetrofit(clazz: Class): T {
val defaultValue = SaveKeyValues.getValue(
- LocalConstant.DEFAULT_SERVER_CONFIG, LocalConstant.SERVER_BASE_URL
+ LocaleConstant.DEFAULT_SERVER_CONFIG, LocaleConstant.SERVER_BASE_URL
) as String
return Retrofit.Builder()
.baseUrl(defaultValue)
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 713a640..dfc905e 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
@@ -145,4 +145,32 @@
@Query("offset") offset: Int,
@Query("limit") limit: Int
): 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("offset") offset: Int,
+ @Query("limit") limit: Int
+ ): String
+
+ /**
+ * 消警
+ *
+ * @param alarmId 告警ID
+ */
+ @GET("/alarm/cancelAlarmById")
+ suspend fun obtainOperationResult(
+ @Header("token") token: String,
+ @Query("alarmId") alarmId: Long
+ ): String
}
\ No newline at end of file
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 8e82f07..6298020 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
@@ -1,11 +1,12 @@
package com.casic.smarttube.utils.retrofit
import com.casic.smarttube.utils.AuthenticationHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import okhttp3.MediaType.Companion.toMediaTypeOrNull
import okhttp3.MultipartBody
import okhttp3.RequestBody
import java.io.File
+import java.util.*
object RetrofitServiceManager {
@@ -62,7 +63,7 @@
): String {
return api.obtainDeviceListByType(
AuthenticationHelper.token!!, deptid, keywords, "12", isOnline,
- "id", "asc", page, LocalConstant.PAGE_LIMIT
+ "id", "asc", page, LocaleConstant.PAGE_LIMIT
)
}
@@ -107,6 +108,40 @@
}
/**
+ * 告警列表
+ */
+ 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,
+ page,
+ LocaleConstant.PAGE_LIMIT
+ )
+ }
+
+ /**
+ * 消警
+ */
+ suspend fun obtainOperationResult(alarmId: Long): String {
+ return api.obtainOperationResult(AuthenticationHelper.token!!, alarmId)
+ }
+
+ /**
* 上传图片
*/
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
new file mode 100644
index 0000000..01fb677
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/AlarmManagementActivity.kt
@@ -0,0 +1,180 @@
+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.utils.DialogHelper
+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 com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+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
+ private var clickedPosition = 0
+
+ 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 = "当前告警"
+ rightOptionView.setOnClickListener {
+// navigatePageTo()
+ "尽情期待~".show(this)
+ }
+ }
+
+ 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)
+ }
+ })
+
+ alarmViewModel.loadState.observe(this, {
+ when (it) {
+ is LoadState.Loading -> {
+ DialogHelper.showLoadingDialog(this, "处理中,请稍后")
+ }
+ is LoadState.Success -> {
+ DialogHelper.dismissLoadingDialog()
+ //刷新列表
+ alarmListAdapter.notifyItemRemoved(clickedPosition)
+ dataBeans.removeAt(clickedPosition)
+ }
+ else -> {
+ DialogHelper.dismissLoadingDialog()
+ }
+ }
+ })
+ }
+
+ 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)
+ }
+
+ override fun onOperationClicked(position: Int) {
+ //标记被点击的item位置
+ clickedPosition = position
+ AlertControlDialog.Builder()
+ .setContext(this@AlarmManagementActivity)
+ .setTitle("确认操作")
+ .setMessage("确定取消报警吗?")
+ .setNegativeButton("取消")
+ .setPositiveButton("确定")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ val alarmId = dataBeans[position].id
+ if (alarmId.toString().isBlank()) {
+ "操作失败,告警ID异常".show(this@AlarmManagementActivity)
+ return
+ }
+ alarmViewModel.obtainOperationResult(alarmId!!.toLong())
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ }
+ })
+ }
+ }
+ }
+ 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
new file mode 100644
index 0000000..c7efb37
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt
@@ -0,0 +1,35 @@
+package com.casic.smarttube.view
+
+import androidx.lifecycle.ViewModelProvider
+import com.casic.smarttube.R
+import com.casic.smarttube.vm.DeviceViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.convertColor
+import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil
+import kotlinx.android.synthetic.main.include_base_title.*
+
+class DeviceDetailActivity : KotlinBaseActivity() {
+
+ private lateinit var deviceViewModel: DeviceViewModel
+ private lateinit var devCode: String
+
+ override fun initLayoutView(): Int =R.layout.activity_device_detail
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(false).init()
+ ImmerseStatusBarUtil.setColor(this, R.color.mainThemeColor.convertColor(this))
+ titleView.text = "设备详情"
+ leftBackView.setOnClickListener { finish() }
+ }
+
+ override fun initData() {
+ devCode = intent.getStringExtra(Constant.INTENT_PARAM)!!
+ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java)
+ }
+
+ override fun initEvent() {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
index c3da55d..694aff6 100644
--- a/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/HistoryDataActivity.kt
@@ -158,7 +158,7 @@
//浓度线
colors.add(R.color.redTextColor.convertColor(this))
entries.add(
- Entry(i.toFloat(), rowsBean.cell!!.toFloat(), "浓度")
+ Entry(i.toFloat(), rowsBean.strength!!.toFloat(), "浓度")
)
}
entryModel.lineColors = colors
diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
index 3e83706..8c455af 100644
--- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt
@@ -10,7 +10,7 @@
import com.casic.smarttube.R
import com.casic.smarttube.utils.AuthenticationHelper
import com.casic.smarttube.utils.DialogHelper
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.RSAUtils
import com.casic.smarttube.vm.AuthenticateViewModel
import com.casic.smarttube.vm.LoginViewModel
@@ -54,8 +54,8 @@
override fun initData() {
// 设置默认账号密码
- userNameView.setText(SaveKeyValues.getValue(LocalConstant.ACCOUNT, "") as String)
- userPasswordView.setText(SaveKeyValues.getValue(LocalConstant.PASSWORD, "") as String)
+ userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String)
+ userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String)
authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java)
loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
userViewModel = ViewModelProvider(this).get(UserViewModel::class.java)
@@ -84,8 +84,8 @@
"密码不能为空".show(this)
return@setOnClickListener
}
- SaveKeyValues.putValue(LocalConstant.ACCOUNT, account)
- SaveKeyValues.putValue(LocalConstant.PASSWORD, userPassword)
+ SaveKeyValues.putValue(LocaleConstant.ACCOUNT, account)
+ SaveKeyValues.putValue(LocaleConstant.PASSWORD, userPassword)
authenticateViewModel.obtainPublicKey()
}
authenticateViewModel.keyModel.observe(this, {
diff --git a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
index d6dee4d..82fcafd 100644
--- a/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
+++ b/app/src/main/java/com/casic/smarttube/view/PermissionActivity.kt
@@ -2,7 +2,7 @@
import com.amap.api.navi.NaviSetting
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.gyf.immersionbar.ImmersionBar
import com.pengxh.kt.lite.base.KotlinBaseActivity
import com.pengxh.kt.lite.extensions.convertColor
@@ -23,15 +23,15 @@
override fun initData() {
//判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。
- if (EasyPermissions.hasPermissions(this, *LocalConstant.USER_PERMISSIONS)) {
+ if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) {
startSplashScreenActivity()
} else {
enterMainButton.setOnClickListener {
EasyPermissions.requestPermissions(
this@PermissionActivity,
resources.getString(R.string.app_name) + "需要获取存储相关权限",
- LocalConstant.PERMISSIONS_CODE,
- *LocalConstant.USER_PERMISSIONS
+ LocaleConstant.PERMISSIONS_CODE,
+ *LocaleConstant.USER_PERMISSIONS
)
}
}
diff --git a/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
new file mode 100644
index 0000000..1988902
--- /dev/null
+++ b/app/src/main/java/com/casic/smarttube/vm/AlarmViewModel.kt
@@ -0,0 +1,68 @@
+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
+import com.pengxh.kt.lite.vm.LoadState
+
+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()
+ })
+
+ fun obtainOperationResult(alarmId: Long) = launch({
+ loadState.value = LoadState.Loading
+ val response = RetrofitServiceManager.obtainOperationResult(alarmId)
+ val responseCode = response.separateResponseCode()
+ if (responseCode == 200) {
+ loadState.value = LoadState.Success
+ "操作成功".show(BaseApplication.obtainInstance())
+ } else {
+ loadState.value = LoadState.Fail
+ response.toErrorMessage().show(BaseApplication.obtainInstance())
+ }
+ }, {
+ loadState.value = LoadState.Fail
+ it.printStackTrace()
+ })
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
index 8c33d53..5e44b97 100644
--- a/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
+++ b/app/src/main/java/com/casic/smarttube/vm/UserViewModel.kt
@@ -5,7 +5,7 @@
import com.casic.smarttube.extensions.separateResponseCode
import com.casic.smarttube.extensions.toErrorMessage
import com.casic.smarttube.model.UserDetailModel
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.casic.smarttube.utils.retrofit.RetrofitServiceManager
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -28,13 +28,13 @@
response, object : TypeToken() {}.type
)
userDetailModel.value = userDetail
- SaveKeyValues.putValue(LocalConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
+ SaveKeyValues.putValue(LocaleConstant.USER_DETAIL_MODEL, gson.toJson(userDetail.data))
} else {
val errorModel = UserDetailModel()
errorModel.code = responseCode
userDetailModel.value = errorModel
//如果此次获取不到用户信息,那么就清空之前的用户缓存,然后让用户重新登录
- SaveKeyValues.removeKey(LocalConstant.USER_DETAIL_MODEL)
+ SaveKeyValues.removeKey(LocaleConstant.USER_DETAIL_MODEL)
}
}, {
it.printStackTrace()
diff --git a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
index 4fe46ee..4e47f09 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/DateSelectDialog.kt
@@ -6,7 +6,7 @@
import android.view.Gravity
import androidx.fragment.app.FragmentManager
import com.casic.smarttube.R
-import com.casic.smarttube.utils.LocalConstant
+import com.casic.smarttube.utils.LocaleConstant
import com.jzxiang.pickerview.TimePickerDialog
import com.jzxiang.pickerview.data.Type
import com.pengxh.kt.lite.extensions.*
@@ -93,7 +93,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
@@ -112,7 +112,7 @@
.setTitleStringId("请选择起始时间")
.setWheelItemTextSize(16)
.setCyclic(false)
- .setMinMillseconds(System.currentTimeMillis() - LocalConstant.FIVE_YEARS)
+ .setMinMillseconds(System.currentTimeMillis() - LocaleConstant.FIVE_YEARS)
.setMaxMillseconds(System.currentTimeMillis())
.setType(type)
.setCallBack { _: TimePickerDialog?, millSeconds: Long ->
diff --git a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
index 379b932..c1f0c1d 100644
--- a/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
+++ b/app/src/main/java/com/casic/smarttube/widgets/LineChartMarkerView.kt
@@ -15,7 +15,6 @@
private val decimalFormat = DecimalFormat("##0.0")
private val dayView: TextView = findViewById(R.id.dayView)
- private val factoryView: TextView = findViewById(R.id.factoryView)
private val dataView: TextView = findViewById(R.id.dataView)
private var xAxisDate: MutableList = ArrayList()
@@ -28,7 +27,6 @@
super.refreshContent(e, highlight)
val data = e.data as String
try {
- factoryView.text = data
dataView.text = String.format("数据:${decimalFormat.format(e.y.toString().toDouble())}t")
dayView.text = xAxisDate[(e.x).toInt()]
} catch (e1: Exception) {
diff --git a/app/src/main/res/drawable/ic_alarm.xml b/app/src/main/res/drawable/ic_alarm.xml
new file mode 100644
index 0000000..018a29c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_alarm.xml
@@ -0,0 +1,9 @@
+
+