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="区域筛选:" /> - - +