新增 监测设备在线情况列表完成四个

master
wenfei 1 month ago
parent 66926f6758
commit 2632362150

@ -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 //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 DeviceAlermInfoDataListUrl = "dserver/device/vibration/monitoring/list";
public final static String DeviceOnlineStatusUrl = "dserver/device/online/data"; public final static String DeviceOnlineStatusUrl = "dserver/device/online/data";
//设备在线列表
public final static String DeviceOnlineStatusListUrl = "dserver/device/list"; public final static String DeviceOnlineStatusListUrl = "dserver/device/list";
//人员组织结构模块 用户验证接口token //人员组织结构模块 用户验证接口token
public final static String AUTHENTICATIONLOGINTOKEN = "AUTHENTICATIONLOGINTOKEN"; public final static String AUTHENTICATIONLOGINTOKEN = "AUTHENTICATIONLOGINTOKEN";

@ -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<Any>,var type: String,var onItemClickListener: OnItemClickListener) : BaseViewBindingAdapter<AdapterDeviceOnlineStatusListBinding>(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
}
}

@ -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<Object> 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<Object> getDataList() {
return dataList;
}
public void setDataList(List<Object> 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;
}
}
}

@ -32,8 +32,6 @@ import com.yolanda.nohttp.rest.Response
*/ */
class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceAlarmInfofoBinding>() { class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceAlarmInfofoBinding>() {
private lateinit var headView: View
private var datas: MutableList<DeviceAlarmListResultBean.DeviceWarning> = mutableListOf()//报警数据列表 private var datas: MutableList<DeviceAlarmListResultBean.DeviceWarning> = mutableListOf()//报警数据列表
val specialtyList = mutableListOf<String>("all", "STEAM_TURBINE", "CYCLIZATION", "BOILER", "ELECTRICAL") val specialtyList = mutableListOf<String>("all", "STEAM_TURBINE", "CYCLIZATION", "BOILER", "ELECTRICAL")
@ -42,8 +40,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
private lateinit var spinnerAdapter:ArrayAdapter<CharSequence> private lateinit var spinnerAdapter:ArrayAdapter<CharSequence>
private lateinit var launcherResultQRCode: ActivityResultLauncher<Intent>
private var pageNo = 1 private var pageNo = 1
private var pageSize = 20 private var pageSize = 20
@ -82,10 +78,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
} }
} }
launcherResultQRCode = createQRCodeActivityResultLauncher()
binding.lv.emptyView = binding.tvNodata binding.lv.emptyView = binding.tvNodata
headView = View.inflate(this, R.layout.item_work_risk_list, null)
deviceAlarmInfoAdapter = DeviceAlarmInfoAdapter(context, datas) deviceAlarmInfoAdapter = DeviceAlarmInfoAdapter(context, datas)
@ -105,7 +98,8 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
} }
binding.btnQuery.setOnClickListener { binding.btnQuery.setOnClickListener {
authenticationLoginDeviceAlermInfoRsa() pageNo=1
authenticationLoginDeviceAlarmInfoRsa()
} }
binding.lv.setInterface(LoadListView.ILoadListener { binding.lv.setInterface(LoadListView.ILoadListener {
@ -121,51 +115,51 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
//创建一个ActivityResultLauncher //创建一个ActivityResultLauncher
private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher<Intent> { // private fun createQRCodeActivityResultLauncher(): ActivityResultLauncher<Intent> {
//kotlin写法 // //kotlin写法
return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { // return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
val data = it.data // val data = it.data
val resultCode = it.resultCode // val resultCode = it.resultCode
if (resultCode == RESULT_OK) { // if (resultCode == RESULT_OK) {
if (data != null) { // if (data != null) {
val qrCodeStr = data.getStringExtra("code") ?: "" // val qrCodeStr = data.getStringExtra("code") ?: ""
showLog(qrCodeStr) // showLog(qrCodeStr)
if(!TextUtils.isEmpty(qrCodeStr)){ // if(!TextUtils.isEmpty(qrCodeStr)){
//刷新列表数据 // //刷新列表数据
authenticationLoginDeviceAlermInfoRsa() // authenticationLoginDeviceAlarmInfoRsa()
} // }
} // }
} // }
} // }
} // }
private fun authenticationLoginDeviceAlarmInfoRsa() { // private fun authenticationLoginDeviceAlarmInfoRsa() {
try { // try {
//AI三维登录接口 // //AI三维登录接口
val userName = Contans.SP.DeviceAlermInfoAccount // val userName = Contans.SP.DeviceAlermInfoAccount
val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal) // val strPrivateEncode = RSAAndroid.encryptByPrivateKeyForSpiltStr(Contans.SP.DeviceAlermInfoPwd,RSAAndroid.privateRsaKeyLocal)
val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr( // val strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr(
Contans.SP.DeviceAlermInfoPwd, // Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal // RSAAndroid.publicRsaKeyLocal
) // )
showLog(userName) // showLog(userName)
showLog(strPublicDecode) // showLog(strPublicDecode)
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoShowProgress( // AuthenticationLoginAIUtils.authenticationDeviceAlermInfoShowProgress(
this, userName, strPublicDecode // this, userName, strPublicDecode
) { _, token -> // ) { _, token ->
if (token != null && token == "") { // if (token != null && token == "") {
showToast("设备状态智能监测及分析平台登录失败") // showToast("设备状态智能监测及分析平台登录失败")
} else { // } else {
//登录成功 // //登录成功
getAlermListData() // getAlarmListData()
} // }
} // }
} catch (e: Exception) { // } catch (e: Exception) {
e.printStackTrace() // e.printStackTrace()
} // }
} // }
private fun authenticationLoginDeviceAlermInfoRsa() { private fun authenticationLoginDeviceAlarmInfoRsa() {
try { try {
//AI三维登录接口 //AI三维登录接口
val userName = Contans.SP.DeviceAlermInfoAccount val userName = Contans.SP.DeviceAlermInfoAccount
@ -174,8 +168,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
Contans.SP.DeviceAlermInfoPwd, Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal RSAAndroid.publicRsaKeyLocal
) )
// showLog(userName)
// showLog(strPublicDecode)
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress( AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress(
this, userName, strPublicDecode this, userName, strPublicDecode
) { _, token -> ) { _, token ->
@ -183,7 +175,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
showToast("设备状态智能监测及分析平台登录失败") showToast("设备状态智能监测及分析平台登录失败")
} else { } else {
//登录成功 //登录成功
getAlermListData() getAlarmListData()
} }
} }
} catch (e: Exception) { } catch (e: Exception) {
@ -191,7 +183,7 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
} }
} }
private fun getAlermListData() { private fun getAlarmListData() {
val request = NoHttp.createStringRequest( val request = NoHttp.createStringRequest(
Contans.IP + Contans.DeviceAlermInfoListUrl, Contans.IP + Contans.DeviceAlermInfoListUrl,
RequestMethod.GET RequestMethod.GET
@ -236,13 +228,13 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
datas.addAll(bean.data.dataList) datas.addAll(bean.data.dataList)
deviceAlarmInfoAdapter.notifyDataSetChanged() deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE binding.tvNodata.visibility = View.GONE
headView.visibility = View.VISIBLE binding.lv.visibility=View.VISIBLE
pageNo++ pageNo++
}else{ }else{
datas.clear() datas.clear()
deviceAlarmInfoAdapter.notifyDataSetChanged() deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.VISIBLE binding.tvNodata.visibility = View.VISIBLE
headView.visibility = View.VISIBLE binding.lv.visibility=View.GONE
} }
} }
@ -291,7 +283,6 @@ class DeviceAlarmInfoActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceA
datas.addAll(bean.data.dataList) datas.addAll(bean.data.dataList)
deviceAlarmInfoAdapter.notifyDataSetChanged() deviceAlarmInfoAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE binding.tvNodata.visibility = View.GONE
headView.visibility = View.VISIBLE
pageNo++ pageNo++
binding.lv.loadComplete() binding.lv.loadComplete()
}else{ }else{

@ -1,21 +1,44 @@
package com.rehome.zhdcoa.ui.activity package com.rehome.zhdcoa.ui.activity
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.ArrayAdapter import android.widget.ArrayAdapter
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.rehome.zhdcoa.Contans
import com.rehome.zhdcoa.Listener.OnItemClickListener
import com.rehome.zhdcoa.R import com.rehome.zhdcoa.R
import com.rehome.zhdcoa.adapter.DeviceAlarmInfoAdapter
import com.rehome.zhdcoa.adapter.DeviceOnlineStatusListAdapter
import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding
import com.rehome.zhdcoa.bean.DeviceAlarmListResultBean
import com.rehome.zhdcoa.bean.DeviceOnlineStatusListResultBean
import com.rehome.zhdcoa.databinding.ActivityDeviceOnlineStatusListBinding import com.rehome.zhdcoa.databinding.ActivityDeviceOnlineStatusListBinding
import com.rehome.zhdcoa.utils.AuthenticationLoginAIUtils
import com.rehome.zhdcoa.utils.GsonUtils
import com.rehome.zhdcoa.utils.HttpListener
import com.rehome.zhdcoa.utils.NohttpUtils
import com.rehome.zhdcoa.utils.RSAAndroid
import com.rehome.zhdcoa.weiget.OAToolbar import com.rehome.zhdcoa.weiget.OAToolbar
import com.yolanda.nohttp.NoHttp
import com.yolanda.nohttp.RequestMethod
import com.yolanda.nohttp.rest.Response
class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceOnlineStatusListBinding>() { class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceOnlineStatusListBinding>() {
val specialtyList = mutableListOf<String>("VIBRATION", "OIL", "FUEL", "THERMAL IMAGER", "VIBRATION_ZB") val typeList = mutableListOf<String>("VIBRATION", "OIL", "FUEL", "THERMAL_IMAGER", "VIBRATION_ZB")
private lateinit var spinnerAdapter: ArrayAdapter<CharSequence> private lateinit var spinnerAdapter: ArrayAdapter<CharSequence>
//options:[{ value:'online',label:'在线”}{value:'offline',label:'离线”}1 //options:[{ value:'online',label:'在线”}{value:'offline',label:'离线”}1
private var dataList: MutableList<Any> = mutableListOf()//数据列表
private lateinit var deviceOnlineStatusListAdapter: DeviceOnlineStatusListAdapter
private var pageNo = 1
private var pageSize = 20
override fun getViewBinding() = ActivityDeviceOnlineStatusListBinding.inflate(layoutInflater) override fun getViewBinding() = ActivityDeviceOnlineStatusListBinding.inflate(layoutInflater)
@ -34,9 +57,200 @@ class DeviceOnlineStatusListActivity : BaseActivityOaToolbarViewBinding<Activity
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.spZy.adapter = spinnerAdapter binding.spZy.adapter = spinnerAdapter
binding.btnQuery.setOnClickListener {
pageNo=1
authenticationLoginDeviceAlarmInfoRsa()
}
val typeTemp:String = binding.spZy.selectedItem.toString()
showLog("typeTemp:")
showLog(typeTemp)
binding.lv.emptyView = binding.tvNodata
deviceOnlineStatusListAdapter = DeviceOnlineStatusListAdapter(context, dataList,typeTemp
) { position, _ -> {
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() { 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<String?> {
override fun onSucceed(what: Int, response: Response<String?>?) {
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<String?>?) {
}
})
} }
//查区域列表。http://10.19.0.17:1700/dserver/map/area/list?v=1770171007208
} }

@ -134,7 +134,7 @@
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_marginStart="5dp" android:layout_marginStart="5dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="5dp"
android:layout_marginBottom="5dp" android:layout_marginBottom="5dp"

@ -0,0 +1,592 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/ll_cwcz"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关IP:" />
<TextView
android:id="@+id/tv_ip"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关端口:" />
<TextView
android:id="@+id/tv_port"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电量:" />
<TextView
android:id="@+id/tv_dl"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_photo_manage"
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|end"
android:textColor="#0080ff"
android:layout_marginEnd="10dp"
android:text="图片管理"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_yzjc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_yzjc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_lljc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关IP:" />
<TextView
android:id="@+id/tv_ip_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网关端口:" />
<TextView
android:id="@+id/tv_port_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_lljc"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_rcx"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设备编号:" />
<TextView
android:id="@+id/tv_sbbh_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="设备名称:" />
<TextView
android:id="@+id/tv_sbmc_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="区域:" />
<TextView
android:id="@+id/tv_qu_yu_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
style="@style/dagerListMarginTopStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
style="@style/dagerDetailLeftStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="最后在线时间:" />
<TextView
android:id="@+id/tv_sj_rcx"
style="@style/dagerDetailRightStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
Loading…
Cancel
Save