From 263236215051e6f89158f5292dbcaaec73412a56 Mon Sep 17 00:00:00 2001 From: wenfei Date: Thu, 5 Feb 2026 18:49:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=9B=91=E6=B5=8B?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=9C=A8=E7=BA=BF=E6=83=85=E5=86=B5=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=AE=8C=E6=88=90=E5=9B=9B=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/rehome/zhdcoa/Contans.java | 1 + .../adapter/DeviceOnlineStatusListAdapter.kt | 112 +++ .../DeviceOnlineStatusListResultBean.java | 686 ++++++++++++++++++ .../ui/activity/DeviceAlarmInfoActivity.kt | 107 ++- .../DeviceOnlineStatusListActivity.kt | 216 +++++- .../activity_device_online_status_list.xml | 2 +- .../adapter_device_online_status_list.xml | 592 +++++++++++++++ 7 files changed, 1656 insertions(+), 60 deletions(-) create mode 100644 app/src/main/java/com/rehome/zhdcoa/adapter/DeviceOnlineStatusListAdapter.kt create mode 100644 app/src/main/java/com/rehome/zhdcoa/bean/DeviceOnlineStatusListResultBean.java create mode 100644 app/src/main/res/layout/adapter_device_online_status_list.xml diff --git a/app/src/main/java/com/rehome/zhdcoa/Contans.java b/app/src/main/java/com/rehome/zhdcoa/Contans.java index 1a1d2f8..0078669 100644 --- a/app/src/main/java/com/rehome/zhdcoa/Contans.java +++ b/app/src/main/java/com/rehome/zhdcoa/Contans.java @@ -540,6 +540,7 @@ public class Contans { //http://10.19.0.17:1700/dserver/device/vibration/monitoring/list?deviceCode=002c005e&startTime=2026-01-21+14:37:00&endTime=2026-01-22+23:59:59&v=1769063841074 public final static String DeviceAlermInfoDataListUrl = "dserver/device/vibration/monitoring/list"; public final static String DeviceOnlineStatusUrl = "dserver/device/online/data"; + //设备在线列表 public final static String DeviceOnlineStatusListUrl = "dserver/device/list"; //人员组织结构模块 用户验证接口token public final static String AUTHENTICATIONLOGINTOKEN = "AUTHENTICATIONLOGINTOKEN"; diff --git a/app/src/main/java/com/rehome/zhdcoa/adapter/DeviceOnlineStatusListAdapter.kt b/app/src/main/java/com/rehome/zhdcoa/adapter/DeviceOnlineStatusListAdapter.kt new file mode 100644 index 0000000..6e73a13 --- /dev/null +++ b/app/src/main/java/com/rehome/zhdcoa/adapter/DeviceOnlineStatusListAdapter.kt @@ -0,0 +1,112 @@ +package com.rehome.zhdcoa.adapter + + +import android.content.Context +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.rehome.zhdcoa.Listener.OnItemClickListener +import com.rehome.zhdcoa.base.BaseViewBindingAdapter +import com.rehome.zhdcoa.bean.DeviceOnlineStatusListResultBean +import com.rehome.zhdcoa.databinding.AdapterDeviceOnlineStatusListBinding +import com.rehome.zhdcoa.utils.GsonUtils + +class DeviceOnlineStatusListAdapter(var context: Context,var data: MutableList,var type: String,var onItemClickListener: OnItemClickListener) : BaseViewBindingAdapter(context){ + override fun getCount(): Int { + return data.count() + } + + override fun getItem(position: Int): Any { + return data[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + fun setTypeTemp(typeTemp: String) { + this.type=typeTemp + } + + override fun getBinding(inflater: LayoutInflater,parent: ViewGroup?) = AdapterDeviceOnlineStatusListBinding.inflate(inflater, parent, false) + + override fun handleData(position: Int, binding: AdapterDeviceOnlineStatusListBinding) { + Log.i("app",type) + val item: Any = data[position] + + if(type=="测振测温设备"){ + val itemBean:DeviceOnlineStatusListResultBean.DeviceItemCwcz? = GsonUtils.GsonToBean(GsonUtils.GsonString(item), + DeviceOnlineStatusListResultBean.DeviceItemCwcz::class.java) + binding.llCwcz.visibility= View.VISIBLE + binding.llYzjc.visibility= View.GONE + binding.llLljc.visibility= View.GONE + binding.llRcx.visibility= View.GONE + + if(itemBean!=null){ + binding.tvSbbh.text = itemBean.id + binding.tvIp.text = itemBean.ip + binding.tvPort.text = itemBean.port + binding.tvDl.text = itemBean.voltage + binding.tvSbmc.text = itemBean.name + binding.tvSj.text = itemBean.lastOnlineTime + binding.tvPhotoManage.setOnClickListener { + onItemClickListener.onItemClick(position,binding.tvPhotoManage) + } + } + } + if(type=="油质监测设备"){ + val itemBean:DeviceOnlineStatusListResultBean.DeviceItemYzjc? = GsonUtils.GsonToBean(GsonUtils.GsonString(item), + DeviceOnlineStatusListResultBean.DeviceItemYzjc::class.java) + binding.llCwcz.visibility= View.GONE + binding.llYzjc.visibility= View.VISIBLE + binding.llLljc.visibility= View.GONE + binding.llRcx.visibility= View.GONE + + if(itemBean!=null){ + binding.tvSbbhYzjc.text = itemBean.id + binding.tvSbmcYzjc.text = itemBean.name + binding.tvSjYzjc.text = itemBean.lastOnlineTime + } + } + if(type=="燃料测温设备"){ + val itemBean:DeviceOnlineStatusListResultBean.DeviceItemRlcw? = GsonUtils.GsonToBean(GsonUtils.GsonString(item), + DeviceOnlineStatusListResultBean.DeviceItemRlcw::class.java) + binding.llCwcz.visibility= View.GONE + binding.llYzjc.visibility= View.GONE + binding.llLljc.visibility= View.VISIBLE + binding.llRcx.visibility= View.GONE + + if(itemBean!=null){ + binding.tvSbbhLljc.text = itemBean.id + binding.tvIpLljc.text = itemBean.ip + binding.tvPortLljc.text = itemBean.port + binding.tvSbmcLljc.text = itemBean.name + binding.tvSjLljc.text = itemBean.lastOnlineTime + } + } + if(type=="热成像测温设备"){ + val itemBean:DeviceOnlineStatusListResultBean.DeviceItemRcqcw? = GsonUtils.GsonToBean(GsonUtils.GsonString(item), + DeviceOnlineStatusListResultBean.DeviceItemRcqcw::class.java) + binding.llCwcz.visibility= View.GONE + binding.llYzjc.visibility= View.GONE + binding.llLljc.visibility= View.GONE + binding.llRcx.visibility= View.VISIBLE + + if(itemBean!=null){ + binding.tvSbbhRcx.text = itemBean.id + binding.tvSbmcRcx.text = itemBean.name + binding.tvSjRcx.text = itemBean.lastOnlineTime + } + } + if(type=="zigBee 传感器"){ + + } +// binding.tvSbwz.text = item.deviceName +// binding.tvSbid.text = item.deviceCode +// binding.tvZj.text = item.specialtyStr +// binding.tvBjqx.text = item.description +// binding.tvSj.text = item.warningTime + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/bean/DeviceOnlineStatusListResultBean.java b/app/src/main/java/com/rehome/zhdcoa/bean/DeviceOnlineStatusListResultBean.java new file mode 100644 index 0000000..8b5ca0f --- /dev/null +++ b/app/src/main/java/com/rehome/zhdcoa/bean/DeviceOnlineStatusListResultBean.java @@ -0,0 +1,686 @@ +package com.rehome.zhdcoa.bean; + +import java.util.List; +import java.util.Objects; + +public class DeviceOnlineStatusListResultBean extends DeviceAlarmBaseBean{ + private Page data; + + public Page getData() { + return data; + } + + public void setData(Page data) { + this.data = data; + } + + public static class Page{ + /** + * 当前页码数 + */ + private Long pageNo; + + /** + * 每页显示的行数 + */ + private Long pageSize; + + /** + * 总行数 + */ + private Long totalRow; + + /** + * 总页数 + */ + private Long totalPage; + + /** + * 数据 + */ + private List dataList; + + public Long getPageNo() { + return pageNo; + } + + public void setPageNo(Long pageNo) { + this.pageNo = pageNo; + } + + public Long getPageSize() { + return pageSize; + } + + public void setPageSize(Long pageSize) { + this.pageSize = pageSize; + } + + public Long getTotalRow() { + return totalRow; + } + + public void setTotalRow(Long totalRow) { + this.totalRow = totalRow; + } + + public Long getTotalPage() { + return totalPage; + } + + public void setTotalPage(Long totalPage) { + this.totalPage = totalPage; + } + + public List getDataList() { + return dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } + } + + //测振测温设备 + public static class DeviceItemCwcz { + private String id;//id + private String name;//设备名称 + private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口:http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208 + private String lastOnlineTime;//最后在线时间 + private String unit;//机组 + private String specialty;//专业 + private String ip;//ip + private String port;//端口 + private String voltage;//电量 测振测温设备 + private String positionName; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getLastOnlineTime() { + return lastOnlineTime; + } + + public void setLastOnlineTime(String lastOnlineTime) { + this.lastOnlineTime = lastOnlineTime; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getSpecialty() { + return specialty; + } + + public void setSpecialty(String specialty) { + this.specialty = specialty; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public String getVoltage() { + return voltage; + } + + public void setVoltage(String voltage) { + this.voltage = voltage; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + } + //油质监测设备 + public static class DeviceItemYzjc { + private String id;//id + private String name;//设备名称 + private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口:http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208 + private String lastOnlineTime;//最后在线时间 + private String positionName; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getLastOnlineTime() { + return lastOnlineTime; + } + + public void setLastOnlineTime(String lastOnlineTime) { + this.lastOnlineTime = lastOnlineTime; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + } + //燃料测温设备 + public static class DeviceItemRlcw { + private String id;//id + private String name;//设备名称 + private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口:http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208 + private String lastOnlineTime;//最后在线时间 + private String ip;//ip + private String port;//端口 + private Double alarmHighValue;//报警高值 燃料测温设备 + private Double alarmLowValue;//报警低值 燃料测温设备 + private Double warningHighValue;//报警高值 燃料测温设备 + private Double warningLowValue;//报警高值 燃料测温设备 + private String status;//燃料测温设备 + private String detail;//燃料测温设备 + private String alarmCount;//燃料测温设备 + private String alarmFirstTime;//燃料测温设备 + private String alarmLastTime;//燃料测温设备 + private Double temperature;//温度 燃料测温设备 + private String positionName; + + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getLastOnlineTime() { + return lastOnlineTime; + } + + public void setLastOnlineTime(String lastOnlineTime) { + this.lastOnlineTime = lastOnlineTime; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public String getPort() { + return port; + } + + public void setPort(String port) { + this.port = port; + } + + public Double getAlarmHighValue() { + return alarmHighValue; + } + + public void setAlarmHighValue(Double alarmHighValue) { + this.alarmHighValue = alarmHighValue; + } + + public Double getAlarmLowValue() { + return alarmLowValue; + } + + public void setAlarmLowValue(Double alarmLowValue) { + this.alarmLowValue = alarmLowValue; + } + + public Double getWarningHighValue() { + return warningHighValue; + } + + public void setWarningHighValue(Double warningHighValue) { + this.warningHighValue = warningHighValue; + } + + public Double getWarningLowValue() { + return warningLowValue; + } + + public void setWarningLowValue(Double warningLowValue) { + this.warningLowValue = warningLowValue; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getAlarmCount() { + return alarmCount; + } + + public void setAlarmCount(String alarmCount) { + this.alarmCount = alarmCount; + } + + public String getAlarmFirstTime() { + return alarmFirstTime; + } + + public void setAlarmFirstTime(String alarmFirstTime) { + this.alarmFirstTime = alarmFirstTime; + } + + public String getAlarmLastTime() { + return alarmLastTime; + } + + public void setAlarmLastTime(String alarmLastTime) { + this.alarmLastTime = alarmLastTime; + } + + public Double getTemperature() { + return temperature; + } + + public void setTemperature(Double temperature) { + this.temperature = temperature; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + } + //热成像测温设备 + public static class DeviceItemRcqcw { + private String id;//id + private String name;//设备名称 + private String position;//所在区域,对应区域列表下nodeList下的的nodeKey 接口:http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208 + private String lastOnlineTime;//最后在线时间 + private String ip;//ip + private String ruleId;// 热成像测温设备 + private String areaId;// 区域,对应区域列表下nodeList下的的nodeKey + private String positionName; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + + public String getLastOnlineTime() { + return lastOnlineTime; + } + + public void setLastOnlineTime(String lastOnlineTime) { + this.lastOnlineTime = lastOnlineTime; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public String getRuleId() { + return ruleId; + } + + public void setRuleId(String ruleId) { + this.ruleId = ruleId; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + } + //ZigBee传感器 + public static class DeviceItemZigBee { + private Long id;//id + private String name;//设备名称 + private String type;//设备类型 + private String category;//设备类型 ZigBee传感器 + private String unit;//机组 + private String defaultRpm; + private Double sampleLength;//采样长度 ZigBee传感器 + private Double sampleFreq;//采样频率 ZigBee传感器 + private String bearingNumber;//轴承型号 ZigBee传感器 + private String deviceId;//id ZigBee传感器 + private String deviceCode;//设备编号 ZigBee传感器 + private Double componentId; + private Boolean enable; + private String alarmEnableList; + private String alarmThresholdList; + private Boolean online; + private String healthValue; + private Double healthType; + private String areaId; + private String area; + private String ruleId; + private String installTime; + private String runningTime; + private String fileName; + private String sendTime; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getDefaultRpm() { + return defaultRpm; + } + + public void setDefaultRpm(String defaultRpm) { + this.defaultRpm = defaultRpm; + } + + public Double getSampleLength() { + return sampleLength; + } + + public void setSampleLength(Double sampleLength) { + this.sampleLength = sampleLength; + } + + public Double getSampleFreq() { + return sampleFreq; + } + + public void setSampleFreq(Double sampleFreq) { + this.sampleFreq = sampleFreq; + } + + public String getBearingNumber() { + return bearingNumber; + } + + public void setBearingNumber(String bearingNumber) { + this.bearingNumber = bearingNumber; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public Double getComponentId() { + return componentId; + } + + public void setComponentId(Double componentId) { + this.componentId = componentId; + } + + public Boolean getEnable() { + return enable; + } + + public void setEnable(Boolean enable) { + this.enable = enable; + } + + public String getAlarmEnableList() { + return alarmEnableList; + } + + public void setAlarmEnableList(String alarmEnableList) { + this.alarmEnableList = alarmEnableList; + } + + public String getAlarmThresholdList() { + return alarmThresholdList; + } + + public void setAlarmThresholdList(String alarmThresholdList) { + this.alarmThresholdList = alarmThresholdList; + } + + public Boolean getOnline() { + return online; + } + + public void setOnline(Boolean online) { + this.online = online; + } + + public String getHealthValue() { + return healthValue; + } + + public void setHealthValue(String healthValue) { + this.healthValue = healthValue; + } + + public Double getHealthType() { + return healthType; + } + + public void setHealthType(Double healthType) { + this.healthType = healthType; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getArea() { + return area; + } + + public void setArea(String area) { + this.area = area; + } + + public String getRuleId() { + return ruleId; + } + + public void setRuleId(String ruleId) { + this.ruleId = ruleId; + } + + public String getInstallTime() { + return installTime; + } + + public void setInstallTime(String installTime) { + this.installTime = installTime; + } + + public String getRunningTime() { + return runningTime; + } + + public void setRunningTime(String runningTime) { + this.runningTime = runningTime; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getSendTime() { + return sendTime; + } + + public void setSendTime(String sendTime) { + this.sendTime = sendTime; + } + } +} diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoActivity.kt index aa909e2..b95cb99 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoActivity.kt @@ -32,8 +32,6 @@ import com.yolanda.nohttp.rest.Response */ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding() { - private lateinit var headView: View - private var datas: MutableList = mutableListOf()//报警数据列表 val specialtyList = mutableListOf("all", "STEAM_TURBINE", "CYCLIZATION", "BOILER", "ELECTRICAL") @@ -42,8 +40,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding - private lateinit var launcherResultQRCode: ActivityResultLauncher - private var pageNo = 1 private var pageSize = 20 @@ -82,10 +78,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding { - //kotlin写法 - return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { - val data = it.data - val resultCode = it.resultCode - if (resultCode == RESULT_OK) { - if (data != null) { - val qrCodeStr = data.getStringExtra("code") ?: "" - showLog(qrCodeStr) - if(!TextUtils.isEmpty(qrCodeStr)){ - //刷新列表数据 - authenticationLoginDeviceAlermInfoRsa() - } - } - } - } - } +// private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher { +// //kotlin写法 +// return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { +// val data = it.data +// val resultCode = it.resultCode +// if (resultCode == RESULT_OK) { +// if (data != null) { +// val qrCodeStr = data.getStringExtra("code") ?: "" +// showLog(qrCodeStr) +// if(!TextUtils.isEmpty(qrCodeStr)){ +// //刷新列表数据 +// authenticationLoginDeviceAlarmInfoRsa() +// } +// } +// } +// } +// } + +// private fun authenticationLoginDeviceAlarmInfoRsa() { +// try { +// //AI三维登录接口 +// val userName = Contans.SP.DeviceAlermInfoAccount +// val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal) +// val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( +// Contans.SP.DeviceAlermInfoPwd, +// RSAAndroid.publicRsaKeyLocal +// ) +// showLog(userName) +// showLog(strPublicDecode) +// AuthenticationLoginAIUtils.authenticationDeviceAlermInfoShowProgress( +// this, userName, strPublicDecode +// ) { _, token -> +// if (token != null && token == "") { +// showToast("设备状态智能监测及分析平台登录失败") +// } else { +// //登录成功 +// getAlarmListData() +// } +// } +// } catch (e: Exception) { +// e.printStackTrace() +// } +// } private fun authenticationLoginDeviceAlarmInfoRsa() { try { @@ -148,34 +168,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding - if (token != null && token == "") { - showToast("设备状态智能监测及分析平台登录失败") - } else { - //登录成功 - getAlermListData() - } - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - private fun authenticationLoginDeviceAlermInfoRsa() { - try { - //AI三维登录接口 - val userName = Contans.SP.DeviceAlermInfoAccount - val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal) - val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( - Contans.SP.DeviceAlermInfoPwd, - RSAAndroid.publicRsaKeyLocal - ) -// showLog(userName) -// showLog(strPublicDecode) AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress( this, userName, strPublicDecode ) { _, token -> @@ -183,7 +175,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding() { - val specialtyList = mutableListOf("VIBRATION", "OIL", "FUEL", "THERMAL IMAGER", "VIBRATION_ZB") + val typeList = mutableListOf("VIBRATION", "OIL", "FUEL", "THERMAL_IMAGER", "VIBRATION_ZB") private lateinit var spinnerAdapter: ArrayAdapter //options:[{ value:'online',label:'在线”}{value:'offline',label:'离线”}1, + private var dataList: MutableList = mutableListOf()//数据列表 + + + private lateinit var deviceOnlineStatusListAdapter: DeviceOnlineStatusListAdapter + + private var pageNo = 1 + private var pageSize = 20 override fun getViewBinding() = ActivityDeviceOnlineStatusListBinding.inflate(layoutInflater) @@ -34,9 +57,200 @@ class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding { + val item = dataList[position] + showLog(GsonUtils.GsonString(item)) + } } + binding.lv.adapter = deviceOnlineStatusListAdapter + + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility=View.GONE + } override fun initData() { + authenticationLoginDeviceAlarmInfoRsa() + } + + private fun authenticationLoginDeviceAlarmInfoRsa() { + try { + //AI三维登录接口 + val userName = Contans.SP.DeviceAlermInfoAccount + val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal) + val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( + Contans.SP.DeviceAlermInfoPwd, + RSAAndroid.publicRsaKeyLocal + ) + AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress( + this, userName, strPublicDecode + ) { _, token -> + if (token != null && token == "") { + showToast("设备状态智能监测及分析平台登录失败") + } else { + //登录成功 + getAlarmListData() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun getAlarmListData() { + val request = NoHttp.createStringRequest( + Contans.IP + Contans.DeviceOnlineStatusListUrl, + RequestMethod.GET + ) + + request.add("pageNo",pageNo) + request.add("pageSize",pageSize) + val typeTemp:String = binding.spZy.selectedItem.toString() + //binding.spZy.getSelectedItemPosition() +// if(!TextUtils.isEmpty(zyTemp)){ +// request.add("specialty",zyTemp) +// } + + val typeIndex:Int = binding.spZy.selectedItemPosition + request.add("type",typeList[typeIndex]) + if(binding.rb1.isChecked){ + request.add("online",true) + } + if(binding.rb2.isChecked){ + request.add("online",false) + } + + showLog(typeTemp) + + val keyword = binding.etKey.text.toString().trim() + if(!TextUtils.isEmpty(keyword)){ + request.add("keyword",keyword) + } + + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + + /** + * //测振测温设备 + * { + * "id": "002c00ad", + * "name": "2#湿磨电动机头部", + * "position": "F8C0AD454B904F1381EF0BBAA8656129", + * "lastOnlineTime": "2026-02-04 09:41:24", + * "unit": "2号机组", + * "specialty": "电气", + * "ip": "172.16.5.232", + * "port": "1883", + * "voltage": 74.0 + * } + * //油质监测设备 + * { + * "id": "192.168.34.204_502", + * "name": "2B小机油箱", + * "position": "1EEB173E896242F5A4BD1C74BC5D89C8", + * "lastOnlineTime": "2025-07-24 15:38:24" + * } + * //燃料测温设备 + * { + * "id": "5FDA", + * "name": "6-C9A尾部滚筒右", + * "position": "ABAA12A926C145EF958703A87B3DE7FE", + * "lastOnlineTime": "2026-02-05 09:39:41", + * "alarmHighValue": 80.0, + * "alarmLowValue": 75.0, + * "warningHighValue": 68.0, + * "warningLowValue": 62.0, + * "status": "0", + * "detail": null, + * "alarmCount": null, + * "alarmFirstTime": null, + * "alarmLastTime": null, + * "temperature": 22.6, + * "ip": "172.16.5.232", + * "port": "1883" + * } + * //热成像测温设备 + * { + * "id": "172.16.1.115", + * "name": "1号发电机B相接头\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000", + * "position": null, + * "lastOnlineTime": "2026-02-05 09:38:25", + * "ip": "172.16.1.115", + * "ruleId": "3", + * "areaId": "1EEB173E896242F5A4BD1C74BC5D8888" + * } + * //ZigBee传感器 + * { + * "id": 2, + * "name": "1B前置泵 AB0008", + * "type": "VIBRATION_ACCELERATION", + * "category": "ZigBee", + * "filterUpperCutoffFreq": 5000.0, + * "filterLowerCutoffFreq": 1000, + * "unit": null, + * "defaultRpm": "1485.0", + * "sampleLength": 16384.0, + * "sampleFreq": 30000.0, + * "bearingNumber": "6224-C3", + * "deviceId": "ac65f9fffeab0008", + * "deviceCode": "AB0008", + * "componentId": 2, + * "enable": true, + * "alarmEnableList": "[false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]", + * "alarmThresholdList": "[[0,0,0,0],[0,2.8,0,4.5],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]", + * "online": true, + * "healthValue": null, + * "healthType": null, + * "areaId": "E8AA982417AC4A4D92EFE1CA08352101", + * "area": "1号锅炉0米", + * "installTime": "2026-01-19 14:20:51", + * "runningTime": null, + * "fileName": null, + * "sendTime": null + * } + */ + + val bean = GsonUtils.GsonToBean( + result, + DeviceOnlineStatusListResultBean::class.java + ) + + showLog(GsonUtils.GsonString(bean)) + if (bean != null && bean.code == 20000 && bean.isSuccess && bean.data != null && bean.data.dataList != null && bean.data.dataList.size>0) { + dataList.clear() + dataList.addAll(bean.data.dataList) + deviceOnlineStatusListAdapter.setTypeTemp(binding.spZy.selectedItem.toString()) + deviceOnlineStatusListAdapter.notifyDataSetChanged() + binding.tvNodata.visibility = View.GONE + binding.lv.visibility=View.VISIBLE + pageNo++ + }else{ + dataList.clear() + deviceOnlineStatusListAdapter.setTypeTemp(binding.spZy.selectedItem.toString()) + deviceOnlineStatusListAdapter.notifyDataSetChanged() + binding.tvNodata.visibility = View.VISIBLE + binding.lv.visibility=View.GONE + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) } + //查区域列表。http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208 } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_online_status_list.xml b/app/src/main/res/layout/activity_device_online_status_list.xml index 28ebf24..6ab3c44 100644 --- a/app/src/main/res/layout/activity_device_online_status_list.xml +++ b/app/src/main/res/layout/activity_device_online_status_list.xml @@ -134,7 +134,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file