设备详情-区域选择-完成

master
wenfei 4 weeks ago
parent 78c2d157bf
commit b45f9b543a

@ -82,6 +82,7 @@
tools:replace="android:allowBackup"
tools:targetApi="s">
<meta-data
android:name="design_width"
android:value="768" />
@ -463,6 +464,9 @@
<activity
android:name=".ui.activity.DeviceMonitoringDetailActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.DeviceAreaTreeActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.DeviceOverviewListActivity"
android:screenOrientation="portrait" />

@ -84,6 +84,7 @@ class AddDagerEnterApplyActivity :
binding.ilDCFZBZ.setTvContentOnClickListener {
//val intent = Intent(context, DeparmentTreeActivity::class.java)
val intent = Intent(context, PartDeparmentTreeActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
launcherResult.launch(intent)
}
binding.ilSQSJ.setTvContentOnClickListener {

@ -0,0 +1,216 @@
package com.rehome.zhdcoa.ui.activity;
import static com.rehome.zhdcoa.utils.GsonUtils.GsonToBean;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.rehome.zhdcoa.Contans;
import com.rehome.zhdcoa.R;
import com.rehome.zhdcoa.base.BaseActivityOaToolbarViewBinding;
import com.rehome.zhdcoa.bean.DagerEnterDeparmentTreeBean;
import com.rehome.zhdcoa.bean.DeviceOnlineStatusAreaBean;
import com.rehome.zhdcoa.bean.DeviceOnlineStatusBean;
import com.rehome.zhdcoa.databinding.ActivityDeviceAreaTreeBinding;
import com.rehome.zhdcoa.tree.departmentTree.TreeAdapter;
import com.rehome.zhdcoa.tree.departmentTree.TreePoint;
import com.rehome.zhdcoa.tree.departmentTree.TreeUtils;
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;
import com.rehome.zhdcoa.utils.RSAAndroid;
import com.rehome.zhdcoa.weiget.OAToolbar;
import com.yolanda.nohttp.NoHttp;
import com.yolanda.nohttp.RequestMethod;
import com.yolanda.nohttp.rest.Request;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
public class DeviceAreaTreeActivity extends BaseActivityOaToolbarViewBinding<ActivityDeviceAreaTreeBinding> {
private List<DeviceOnlineStatusAreaBean.DeviceArea> areaList=new ArrayList<>();
private TreeAdapter adapter;
private List<TreePoint> pointList = new ArrayList<>();
private HashMap<String, TreePoint> pointMap = new HashMap<>();
@NonNull
@Override
protected ActivityDeviceAreaTreeBinding getViewBinding() {
return ActivityDeviceAreaTreeBinding.inflate(LayoutInflater.from(this));
}
@NonNull
@Override
protected OAToolbar getToolbar() {
return binding.toolbarView.toolbar;
}
@Override
protected void initView() {
initToolbar("选择区域", "", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
adapter = new TreeAdapter(this, pointList, pointMap);
binding.listView.setAdapter(adapter);
binding.listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.onItemClick(position,new TreeAdapter.OnTreeNodeClickIsLeaf(){
@Override
public void isLeaf(TreePoint treePoint) {
//处理回填
Intent intent = new Intent();
intent.putExtra("nodeKey",treePoint.getID());
intent.putExtra("cname",treePoint.getNNAME());
setResult(RESULT_OK, intent);
finish();
}
});
//TreePoint treePoint = pointList.get(position);
}
});
}
@Override
protected void initData() {
authenticationLoginDeviceAlarmInfoRsa();
}
private void authenticationLoginDeviceAlarmInfoRsa() {
try {
//AI三维登录接口
String userName = Contans.SP.DeviceAlermInfoAccount;
String strPublicDecode = RSAAndroid.decryptByPublicKeyForSpiltStr(
Contans.SP.DeviceAlermInfoPwd,
RSAAndroid.publicRsaKeyLocal
);
AuthenticationLoginAIUtils.authenticationDeviceAlermInfoRsaShowProgress(this,userName,strPublicDecode,new OnAuthenticationLoginListener(){
@Override
public void onAuthenticationSuccess(boolean result, String token) {
if(token!=null&&token.isEmpty()){
//登录失败
showToast("设备状态智能监测及分析平台登录失败");
}else{
//登录成功
getDeviceAreaList();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
public void getDeviceAreaList() {
String url = Contans.IP + Contans.DeviceOnlineStatusAreaBeanUrl;
Request<String> request = NoHttp.createStringRequest(url, RequestMethod.GET);
NohttpUtils.getInstance().add(this,0, request, new HttpListener<String>() {
@SuppressLint({"SetTextI18n", "DefaultLocale"})
@Override
public void onSucceed(int what, com.yolanda.nohttp.rest.Response<String> response) {
String result = response.get();
showLog(result);
DeviceOnlineStatusAreaBean bean = GsonUtils.GsonToBean(
result,
DeviceOnlineStatusAreaBean.class
);
if(bean!=null && bean.getCode()==20000 && bean.isSuccess() && bean.getData()!=null&& !bean.getData().isEmpty()){
areaList.clear();
areaList.addAll(bean.getData());
pointList.clear();
for (int i = 0; i < areaList.size(); i++) {
DeviceOnlineStatusAreaBean.DeviceArea itemParent = areaList.get(i);
pointList.add(new TreePoint(itemParent.getAreaKey(), itemParent.getCname(), "0", "0", i + 1));
if (itemParent.getNodeList() != null && !itemParent.getNodeList().isEmpty()) {
for (int j = 0; j < itemParent.getNodeList().size(); j++) {
DeviceOnlineStatusAreaBean.NodeList itemSecondNode = itemParent.getNodeList().get(j);
pointList.add(new TreePoint(itemSecondNode.getNodeKey(), itemSecondNode.getCname(), itemSecondNode.getAreaKey(), "1", j + 1));
}
}else{
pointList.add(new TreePoint(itemParent.getAreaKey(), itemParent.getCname(), "0", "1", i + 1));
}
}
//打乱集合中的数据
Collections.shuffle(pointList);
//对集合中的数据重新排序
updateData();
}else{
showLog("数据加载失败");
}
}
@Override
public void onFailed(int what, com.yolanda.nohttp.rest.Response<String> response) {
}
});
}
//对数据排序 深度优先
private void updateData() {
for (TreePoint treePoint : pointList) {
pointMap.put(treePoint.getID(), treePoint);
}
Collections.sort(pointList, new Comparator<TreePoint>() {
@Override
public int compare(TreePoint lhs, TreePoint rhs) {
int llevel = TreeUtils.getLevel(lhs, pointMap);
int rlevel = TreeUtils.getLevel(rhs, pointMap);
if (llevel == rlevel) {
if (lhs.getPARENTID().equals(rhs.getPARENTID())) { //左边小
return lhs.getDISPLAY_ORDER() > rhs.getDISPLAY_ORDER() ? 1 : -1;
} else { //如果父辈id不相等
//同一级别,不同父辈
TreePoint ltreePoint = TreeUtils.getTreePoint(lhs.getPARENTID(), pointMap);
TreePoint rtreePoint = TreeUtils.getTreePoint(rhs.getPARENTID(), pointMap);
return compare(ltreePoint, rtreePoint); //父辈
}
} else { //不同级别
if (llevel > rlevel) { //左边级别大 左边小
if (lhs.getPARENTID().equals(rhs.getID())) {
return 1;
} else {
TreePoint lreasonTreePoint = TreeUtils.getTreePoint(lhs.getPARENTID(), pointMap);
return compare(lreasonTreePoint, rhs);
}
} else { //右边级别大 右边小
if (rhs.getPARENTID().equals(lhs.getID())) {
return -1;
}
TreePoint rreasonTreePoint = TreeUtils.getTreePoint(rhs.getPARENTID(), pointMap);
return compare(lhs, rreasonTreePoint);
}
}
}
});
adapter.notifyDataSetChanged();
}
}

@ -7,6 +7,8 @@ import android.view.View
import android.widget.ArrayAdapter
import android.widget.RadioGroup
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
@ -45,6 +47,11 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
private lateinit var deviceManagerListAdapter: DeviceManagerListAdapter
private lateinit var launcherResult: ActivityResultLauncher<Intent>
private lateinit var launcherResultPhotoManager: ActivityResultLauncher<Intent>
private var nodeKey: String? = null
private var cname: String? = null
//DeviceManagerListAdapter
//adapter_device_manager_list
// DeviceManagerListResultBean
@ -59,6 +66,8 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
})
launcherResult = createActivityResultLauncher()
launcherResultPhotoManager = createActivityResultLauncherPhotoManager()
binding.btnQuery.setOnClickListener {
if(deviceManagerList.size>0){
filterChange()
@ -67,6 +76,14 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
}
}
binding.etArea.setOnClickListener {
if(areaList.size>0){
val intent = Intent(context, DeviceAreaTreeActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
launcherResult.launch(intent)
}
}
binding.lv.emptyView = binding.tvNodata
val gson = GsonBuilder()
@ -83,7 +100,8 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
intent.putExtra("deviceName", item.name)
intent.putExtra("deviceId", item.code)
startActivity(intent)
launcherResultPhotoManager.launch(intent)
//startActivity(intent)
}
},object:OnItemClickListener{
@ -119,7 +137,7 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
override fun onRestart() {
super.onRestart()
authenticationLoginDeviceAlarmInfoRsaNoProgress()
//authenticationLoginDeviceAlarmInfoRsaNoProgress()
}
private fun filterChange(){
@ -127,19 +145,32 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
deviceManagerListFilter.clear()
if(binding.rb1.isChecked){
for (item in deviceManagerList) {
if(item.online){
if(item.online!=null&&item.online){
deviceManagerListFilter.add(item)
}
}
}
if(binding.rb2.isChecked){
for (item in deviceManagerList) {
if(!item.online){
if(item.online!=null&&!item.online){
deviceManagerListFilter.add(item)
}
}
}
if(!TextUtils.isEmpty(binding.etKey.text.toString().trim())){
if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
if((!TextUtils.isEmpty(item.name)&&item.name.contains(binding.etKey.text.toString().trim()))&&(!TextUtils.isEmpty(item.areaFullName)&&item.areaFullName.contains(binding.etArea.text.toString().trim()))){
deviceManagerListFilterKeyFilter.add(item)
}
}
deviceManagerListFilter.clear()
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
deviceManagerListAdapter.notifyDataSetChanged()
}
}else{
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
@ -149,11 +180,27 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
}
deviceManagerListFilter.clear()
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
deviceManagerListAdapter.notifyDataSetChanged()
}
}
}else{
if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
if(!TextUtils.isEmpty(item.areaFullName)&&item.areaFullName.contains(binding.etArea.text.toString().trim())){
deviceManagerListFilterKeyFilter.add(item)
}
}
deviceManagerListFilter.clear()
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
deviceManagerListAdapter.notifyDataSetChanged()
}
}
}
showLog("deviceManagerListFilter size:"+deviceManagerListFilter.size.toString())
showLog("deviceManagerList size:"+deviceManagerList.size.toString())
deviceManagerListAdapter.notifyDataSetChanged()
//deviceManagerListAdapter.notifyDataSetChanged()
binding.tvNodata.visibility = View.GONE
binding.lv.visibility=View.VISIBLE
}else{
@ -283,6 +330,19 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
}
}
if(!TextUtils.isEmpty(binding.etKey.text.toString().trim())){
if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
if((!TextUtils.isEmpty(item.name)&&item.name.contains(binding.etKey.text.toString().trim()))&&(!TextUtils.isEmpty(item.areaFullName)&&item.areaFullName.contains(binding.etArea.text.toString().trim()))){
deviceManagerListFilterKeyFilter.add(item)
}
}
deviceManagerListFilter.clear()
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
deviceManagerListAdapter.notifyDataSetChanged()
}
}else{
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
@ -294,6 +354,21 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
}
}
}else{
if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
if(deviceManagerListFilter.size>0){
val deviceManagerListFilterKeyFilter: MutableList<DeviceManagerListResultBean.DeviceManagerItem> = mutableListOf()
for (item in deviceManagerListFilter) {
if(!TextUtils.isEmpty(item.areaFullName)&&item.areaFullName.contains(binding.etArea.text.toString().trim())){
deviceManagerListFilterKeyFilter.add(item)
}
}
deviceManagerListFilter.clear()
deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
deviceManagerListAdapter.notifyDataSetChanged()
}
}
}
}
deviceManagerListAdapter.notifyDataSetChanged()
@ -512,4 +587,43 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding<ActivityDevic
}
})
}
//创建一个ActivityResultLauncher,选择区域
private fun createActivityResultLauncher(): ActivityResultLauncher<Intent> {
//kotlin写法
return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
val data = it.data
val resultCode = it.resultCode
if (resultCode == RESULT_OK) {
if (data != null) {
nodeKey = data.getStringExtra("nodeKey")
cname = data.getStringExtra("cname")
if(cname!=null&&nodeKey!=null){
binding.etArea.setText(cname)
filterChange()
}
}
}
}
}
//创建一个ActivityResultLauncher设备图片图片管理
private fun createActivityResultLauncherPhotoManager(): ActivityResultLauncher<Intent> {
//kotlin写法
return registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
val data = it.data
val resultCode = it.resultCode
if (resultCode == RESULT_OK) {
if (data != null) {
val isPhotoChange = data.getBooleanExtra("isPhotoChange",false)
if(isPhotoChange){
deviceManagerList.clear()
deviceManagerListFilter.clear()
deviceManagerListAdapter.notifyDataSetChanged()
authenticationLoginDeviceAlarmInfoRsa()
}
}
}
}
}
}

@ -15,6 +15,7 @@ import com.rehome.zhdcoa.ui.fragment.DeviceMonitoringStatisticsFragment
*/
class DeviceMonitoringDetailActivity : BaseActivityOaToolbarViewBinding<ActivityDeviceMonitoringDetailBinding>() {
private val fragments: MutableList<Fragment> = mutableListOf()
private var page = 0
private lateinit var deviceCode:String

@ -137,6 +137,7 @@ import top.zibin.luban.OnRenameListener;
public class DeviceOnlinePhotoManageActivity extends BaseActivity {
private boolean devicePhotoChange=false;
private RecyclerView recycle;
private RecyclerView recycleDevicePhotoOnline;
@ -221,6 +222,15 @@ public class DeviceOnlinePhotoManageActivity extends BaseActivity {
}
initToolbar("设备图片管理", "提交", new View.OnClickListener() {
@Override
public void onClick(View v) {
//处理回填
Intent intent = new Intent();
intent.putExtra("isPhotoChange", devicePhotoChange);
setResult(RESULT_OK, intent);
finish();
}
}, new View.OnClickListener() {
@Override
public void onClick(View v) {
//提交汇报数据
@ -477,6 +487,7 @@ public class DeviceOnlinePhotoManageActivity extends BaseActivity {
@SuppressLint("NotifyDataSetChanged")
@Override
public void confirm(String notice) {
devicePhotoChange=true;
mAdapter.getData().clear();
mAdapter.notifyDataSetChanged();
authenticationLoginDeviceAlarmInfoRsa();
@ -544,6 +555,7 @@ public class DeviceOnlinePhotoManageActivity extends BaseActivity {
@SuppressLint("NotifyDataSetChanged")
@Override
public void confirm(String notice) {
devicePhotoChange=true;
ll_recycle.setVisibility(View.VISIBLE);
authenticationLoginDeviceAlarmInfoRsa();
}

@ -244,8 +244,8 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
binding.etUsername.setText("ZHPS_Admin")
binding.etPassword.setText("Rehome.zhps@996")
// binding.etUsername.setText("310249")
// binding.etPassword.setText("GZgs#@0249")
// binding.etUsername.setText("310187")
// binding.etPassword.setText("4321@cwxING")
//张富荣
// binding.etUsername.setText("310272")
// binding.etPassword.setText("zh0272AS*")

@ -0,0 +1,25 @@
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
tools:context=".ui.activity.DeviceAreaTreeActivity">
<include
android:id="@+id/toolbarView"
layout="@layout/layout_base" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="@null"
android:divider="#dadada"
android:dividerHeight="1dp"
android:fadingEdge="none"
android:listSelector="@android:color/transparent"
android:scrollbarSize="2dp"/>
</LinearLayout>

@ -32,7 +32,7 @@
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="区域筛选:" />
<FrameLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="76px"
android:layout_marginEnd="2dp"
@ -41,12 +41,12 @@
android:id="@+id/et_area"
style="@style/editTextTheme"
android:textSize="14sp"
android:enabled="false"
android:editable="false"
android:layout_gravity="center_vertical"
android:layout_width="match_parent"
android:layout_weight="1"
android:hint="请选择区域" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout

Loading…
Cancel
Save