diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2f0ce19..ba67a46 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -82,6 +82,7 @@
tools:replace="android:allowBackup"
tools:targetApi="s">
+
@@ -463,6 +464,9 @@
+
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/AddDagerEnterApplyActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/AddDagerEnterApplyActivity.kt
index 2c79e50..2d6b575 100644
--- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/AddDagerEnterApplyActivity.kt
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/AddDagerEnterApplyActivity.kt
@@ -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 {
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAreaTreeActivity.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAreaTreeActivity.java
new file mode 100644
index 0000000..fea7efa
--- /dev/null
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceAreaTreeActivity.java
@@ -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 {
+
+ private List areaList=new ArrayList<>();
+ private TreeAdapter adapter;
+ private List pointList = new ArrayList<>();
+ private HashMap 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 request = NoHttp.createStringRequest(url, RequestMethod.GET);
+
+ NohttpUtils.getInstance().add(this,0, request, new HttpListener() {
+
+ @SuppressLint({"SetTextI18n", "DefaultLocale"})
+ @Override
+ public void onSucceed(int what, com.yolanda.nohttp.rest.Response 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 response) {
+
+ }
+ });
+ }
+
+ //对数据排序 深度优先
+ private void updateData() {
+ for (TreePoint treePoint : pointList) {
+ pointMap.put(treePoint.getID(), treePoint);
+ }
+ Collections.sort(pointList, new Comparator() {
+ @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();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceManagerListActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceManagerListActivity.kt
index eb4a7ed..28e9c81 100644
--- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceManagerListActivity.kt
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceManagerListActivity.kt
@@ -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
+ private lateinit var launcherResultPhotoManager: ActivityResultLauncher
+ private var nodeKey: String? = null
+ private var cname: String? = null
+
//DeviceManagerListAdapter
//adapter_device_manager_list
// DeviceManagerListResultBean
@@ -59,6 +66,8 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding0){
filterChange()
@@ -67,6 +76,14 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding0){
+ 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 : BaseActivityOaToolbarViewBinding0){
- val deviceManagerListFilterKeyFilter: MutableList = mutableListOf()
- for (item in deviceManagerListFilter) {
- if(!TextUtils.isEmpty(item.name)&&item.name.contains(binding.etKey.text.toString().trim())){
- deviceManagerListFilterKeyFilter.add(item)
+ if(!TextUtils.isEmpty(binding.etArea.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()))&&(!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 = 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()
+ }
+ }
+ }else{
+ if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
+ if(deviceManagerListFilter.size>0){
+ val deviceManagerListFilterKeyFilter: MutableList = 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()
}
- deviceManagerListFilter.clear()
- deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
}
}
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,15 +330,43 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding0){
- val deviceManagerListFilterKeyFilter: MutableList = mutableListOf()
- for (item in deviceManagerListFilter) {
- if(!TextUtils.isEmpty(item.name)&&item.name.contains(binding.etKey.text.toString().trim())){
- deviceManagerListFilterKeyFilter.add(item)
+ if(!TextUtils.isEmpty(binding.etArea.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()))&&(!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 = 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)
+ }
+ }
+ }else{
+ if(!TextUtils.isEmpty(binding.etArea.text.toString().trim())){
+ if(deviceManagerListFilter.size>0){
+ val deviceManagerListFilterKeyFilter: MutableList = 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()
}
- deviceManagerListFilter.clear()
- deviceManagerListFilter.addAll(deviceManagerListFilterKeyFilter)
}
}
}
@@ -512,4 +587,43 @@ class DeviceManagerListActivity : BaseActivityOaToolbarViewBinding {
+ //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 {
+ //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()
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceMonitoringDetailActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceMonitoringDetailActivity.kt
index 5c938b0..827e712 100644
--- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceMonitoringDetailActivity.kt
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceMonitoringDetailActivity.kt
@@ -15,6 +15,7 @@ import com.rehome.zhdcoa.ui.fragment.DeviceMonitoringStatisticsFragment
*/
class DeviceMonitoringDetailActivity : BaseActivityOaToolbarViewBinding() {
+
private val fragments: MutableList = mutableListOf()
private var page = 0
private lateinit var deviceCode:String
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceOnlinePhotoManageActivity.java b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceOnlinePhotoManageActivity.java
index 07e8a0e..26c1477 100644
--- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceOnlinePhotoManageActivity.java
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/DeviceOnlinePhotoManageActivity.java
@@ -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,12 +222,21 @@ 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) {
//提交汇报数据
mData.clear();
mData.addAll(mAdapter.getData());
- if(!mData.isEmpty()){
+ if (!mData.isEmpty()) {
//弹框提示
CommitDialog dialog = new CommitDialog(context, new CommitDialog.CommitDialogListener() {
@@ -242,7 +252,7 @@ public class DeviceOnlinePhotoManageActivity extends BaseActivity {
});
dialog.setTvMsg("您确定要上传设备照片吗?");
dialog.show();
- }else{
+ } else {
showToast("请选择设备照片后再提交");
}
}
@@ -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();
}
diff --git a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt
index 3aab8bf..cb9eef1 100644
--- a/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt
+++ b/app/src/main/java/com/rehome/zhdcoa/ui/activity/LoginActivity.kt
@@ -244,8 +244,8 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() {
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*")
diff --git a/app/src/main/res/layout/activity_device_area_tree.xml b/app/src/main/res/layout/activity_device_area_tree.xml
new file mode 100644
index 0000000..9dd2255
--- /dev/null
+++ b/app/src/main/res/layout/activity_device_area_tree.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_device_manager_list.xml b/app/src/main/res/layout/activity_device_manager_list.xml
index ebae3d8..c17bad1 100644
--- a/app/src/main/res/layout/activity_device_manager_list.xml
+++ b/app/src/main/res/layout/activity_device_manager_list.xml
@@ -32,7 +32,7 @@
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="区域筛选:" />
-
-
+