From ff42099330045039e144a7e071e3e21bb44c031b Mon Sep 17 00:00:00 2001 From: wenfei Date: Wed, 4 Mar 2026 18:13:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=AF=A6=E6=83=85=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=B6=8B=E5=8A=BF=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/DeviceAlarmInfoDetailActivity.kt | 1 + .../DeviceAlarmInfoLineChartActivity.java | 20 +- .../ui/activity/DeviceManagerListActivity.kt | 177 +++++++++++++++++- .../DeviceMonitoringDetailFragment.java | 37 ++++ .../utils/AuthenticationLoginAIUtils.java | 86 +++++++++ .../res/drawable-xhdpi/icon_pin_pu_tu.png | Bin 0 -> 3198 bytes app/src/main/res/drawable-xhdpi/icon_qzt.png | Bin 0 -> 3469 bytes .../fragment_device_monitoring_detail.xml | 78 ++++---- .../layout/item_device_detail_row_type.xml | 27 ++- 9 files changed, 373 insertions(+), 53 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/icon_pin_pu_tu.png create mode 100644 app/src/main/res/drawable-xhdpi/icon_qzt.png diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoDetailActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoDetailActivity.kt index 1165d1c..dd4465e 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoDetailActivity.kt +++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAlarmInfoDetailActivity.kt @@ -26,6 +26,7 @@ class DeviceAlarmInfoDetailActivity : BaseActivityOaToolbarViewBinding + if (token != null && token == "") { + showToast("设备状态智能监测及分析平台登录失败") + } else { + //登录成功 + //获取区域 + getDeviceAreaListNoProgress() + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + private fun getDeviceManagerListData() { val request = NoHttp.createStringRequest( @@ -288,6 +315,103 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + + val bean = GsonUtils.GsonToBean( + result, + DeviceManagerListResultBean::class.java + ) + + showLog(GsonUtils.GsonString(bean)) + if (bean != null && bean.code == 20000 && bean.isSuccess && bean.data != null&& bean.data.size>0) { + deviceManagerList.clear() + deviceManagerListFilter.clear() + deviceManagerList.addAll(bean.data) + + if(areaNodeList.size>0){ + for (item in deviceManagerList) { + if(!TextUtils.isEmpty(item.areaId)){ + for (itemAreaNode in areaNodeList) { + if(item.areaId==itemAreaNode.nodeKey){ + item.areaFullName=itemAreaNode.areaFullName + item.areaFullPath=itemAreaNode.areaFullPath + } + } + } + showLog(GsonUtils.GsonString(item)) + } + if(binding.rb1.isChecked){ + for (item in deviceManagerList) { + if(item.online){ + deviceManagerListFilter.add(item) + } + } + } + if(binding.rb2.isChecked){ + for (item in deviceManagerList) { + if(!item.online){ + deviceManagerListFilter.add(item) + } + } + } + if(!TextUtils.isEmpty(binding.etKey.text.toString().trim())){ + if(deviceManagerListFilter.size>0){ + val deviceManagerListFilterKeyFilter: MutableList = mutableListOf() + for (item in deviceManagerListFilter) { + if(!TextUtils.isEmpty(item.name)&&item.name.contains(binding.etKey.text.toString().trim())){ + deviceManagerListFilterKeyFilter.add(item) + } + } + deviceManagerListFilter.clear() + deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter) + } + } + } + + deviceManagerListAdapter.notifyDataSetChanged() + binding.tvNodata.visibility = View.GONE + binding.lv.visibility=View.VISIBLE + + }else{ + deviceManagerList.clear() + deviceManagerListFilter.clear() + deviceManagerListAdapter.notifyDataSetChanged() + binding.tvNodata.visibility = View.VISIBLE + binding.lv.visibility=View.GONE + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } + private fun getDeviceAreaList() { //DeviceOnlineStatusAreaBean @@ -337,4 +461,55 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding { + + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + showLog("----------------") + showLog(result) + + + val bean = GsonUtils.GsonToBean( + result, + DeviceOnlineStatusAreaBean::class.java + ) + + showLog(GsonUtils.GsonString(bean)) + if (bean != null && bean.code == 20000 && bean.isSuccess && bean.data != null && bean.data.size>0) { + areaList.clear() + areaNodeList.clear() + areaList.addAll(bean.data) + //更新区域 + for (itemArea in areaList) { + if (itemArea.nodeList != null && itemArea.nodeList.size > 0) { + for (itemNodeList in itemArea.nodeList) { + if (!TextUtils.isEmpty(itemNodeList.cname)) { + itemNodeList.areaFullPath=itemArea.cname+"/"+itemNodeList.cname + itemNodeList.areaFullName=itemArea.cname+">"+itemNodeList.cname + areaNodeList.add(itemNodeList) + } + } + } + } + showLog(GsonUtils.GsonString(areaList)) + SPUtils.put(context, Contans.DeviceOnlineStatusAreaBean,result) + //获取设备管理列表 + getDeviceManagerListDataNoProgress() + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/DeviceMonitoringDetailFragment.java b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/DeviceMonitoringDetailFragment.java index 19d166f..a6995ac 100644 --- a/app/src/main/java/com/rehome/zhdcoa/ui/fragment/DeviceMonitoringDetailFragment.java +++ b/app/src/main/java/com/rehome/zhdcoa/ui/fragment/DeviceMonitoringDetailFragment.java @@ -3,6 +3,7 @@ package com.rehome.zhdcoa.ui.fragment; import static com.rehome.zhdcoa.utils.GsonUtils.GsonToBean; import android.annotation.SuppressLint; +import android.content.Intent; import android.graphics.Color; import android.os.Bundle; @@ -22,7 +23,9 @@ import com.rehome.zhdcoa.bean.DeviceDetailListResultBean; import com.rehome.zhdcoa.bean.DeviceOnlineStatusBean; import com.rehome.zhdcoa.databinding.FragmentDeviceMonitoringDetailBinding; import com.rehome.zhdcoa.databinding.FragmentTrainBinding; +import com.rehome.zhdcoa.ui.activity.DeviceAlarmInfoLineChartActivity; 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.OnAuthenticationLoginListener; @@ -81,6 +84,29 @@ public class DeviceMonitoringDetailFragment extends BaseViewBindingFragment request = NoHttp.createStringRequest(Contans.IP + Contans.DeviceAlermInfoLoginRsaUrl, RequestMethod.POST); + + Map params = new HashMap<>(); + params.put("username", account); + params.put("password", password); + + String json = GsonUtils.GsonString(params); + //showLog(json,mActivity); + String jsonEncrypt = RSAUtils.encryptBASE64Str(json); + showLog(jsonEncrypt, mActivity); + request.setDefineRequestBodyForJson(jsonEncrypt); + + if (Contans.IP.equals(Contans.IP_EXTRANET)) { + SSLSocketFactory socketFactory = NohttpUtils.getSSLSocketFactory(mActivity); + if (socketFactory != null) { + request.setSSLSocketFactory(socketFactory); + request.setHostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String s, SSLSession sslSession) { + return true; + } + }); + } + } + + NohttpUtils.getInstance().addNoProgress(mActivity, 0, request, new HttpListener() { + + @Override + public void onSucceed(int what, Response response) { + + showLog("----------------", mActivity); + String result = response.get(); + showLog(result, mActivity); + + if (!TextUtils.isEmpty(result)) { + String jsonDecode = RSAUtils.decryptBASE64StrClient(result); + if (TextUtils.isEmpty(jsonDecode)) { + //解密失败 + showLog("APP解密失败", mActivity); + listener.onAuthenticationSuccess(false, ""); + } else { + showLog(jsonDecode, mActivity); + UserAuthenticationAIBean bean = GsonToBean(jsonDecode, UserAuthenticationAIBean.class); + //DeviceAlarmLoginResultBean bean = GsonToBean(result, DeviceAlarmLoginResultBean.class); + if (bean != null) { + if (bean.isSuccess() && bean.getCode() == 20000) {//登录成功 + listener.onAuthenticationSuccess(true, bean.getData().getToken()); + } else { + if (bean.getFlag() == -1) { + if (bean.getMsg() != null && bean.getMsg().equals("用户未注销")) { + String token = (String) SPUtils.get(mActivity, Contans.AUTHENTICATIONLOGINTOKENAI, String.valueOf("")); + listener.onAuthenticationSuccess(true, token); + } + } else { + listener.onAuthenticationSuccess(false, ""); + if (bean.getFlag() == -2) { + showLog("没有传参", mActivity); + } + if (bean.getFlag() == -3) { + showLog("服务器解密失败", mActivity); + } + if (bean.getFlag() == -4) { + showLog("Json 格式不正确", mActivity); + } + if (bean.getFlag() == -5) { + showLog("账号密码不能为空", mActivity); + } + if (bean.getFlag() == -6) { + showLog("账号或密码错误", mActivity); + } + } + } + } + } + } + } + + @Override + public void onFailed(int what, Response response) { + showLog("onFailed", mActivity); + listener.onAuthenticationSuccess(false, ""); + } + }); + } public static void showLog(String logText, Context context) { if (isApkInDebug(context)) { diff --git a/app/src/main/res/drawable-xhdpi/icon_pin_pu_tu.png b/app/src/main/res/drawable-xhdpi/icon_pin_pu_tu.png new file mode 100644 index 0000000000000000000000000000000000000000..edf480453420c4015a09e298915971fb7b8ddd0d GIT binary patch literal 3198 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/fragment_device_monitoring_detail.xml b/app/src/main/res/layout/fragment_device_monitoring_detail.xml index f09a900..905c239 100644 --- a/app/src/main/res/layout/fragment_device_monitoring_detail.xml +++ b/app/src/main/res/layout/fragment_device_monitoring_detail.xml @@ -6,6 +6,47 @@ android:background="#242e2f" android:orientation="vertical" tools:context=".ui.fragment.DeviceMonitoringDetailFragment"> + + + + + + + + + - - - - - - - - + + + + + android:visibility="visible" + android:text="" />