From bcdd75fb55b4c887e10b660a31538bf15bfd1c82 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期四, 31 七月 2025 13:17:36 +0800
Subject: [PATCH] 2025年07月31日13:17:34

---
 app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsMoveActivity.java |   28 +++++++++
 app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListActivity.java |   46 +++++++-------
 app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java          |   53 ++++++++++++++++-
 3 files changed, 98 insertions(+), 29 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
index f4b38e3..b21f7ed 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/CPowerStationActivity.java
@@ -12,6 +12,7 @@
 
 
 import com.google.gson.Gson;
+import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
 import com.hdl.linkpm.sdk.core.exception.HDLException;
 import com.hdl.linkpm.sdk.home.type.HomeType;
@@ -25,6 +26,7 @@
 import com.hdl.photovoltaic.databinding.ActivityCpowerStationBinding;
 import com.hdl.photovoltaic.enums.NetworkType;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
+import com.hdl.photovoltaic.other.HdlCommonLogic;
 import com.hdl.photovoltaic.other.HdlDeviceLogic;
 import com.hdl.photovoltaic.other.HdlESLocalJsonLogic;
 import com.hdl.photovoltaic.other.HdlLogLogic;
@@ -259,16 +261,20 @@
                 String path = HDLUniMP.UNI_EVENT_OPEN_HOME_Null_C;
                 HdlUniLogic.getInstance().openUniMP(path, null);
             } else {
-                //瑙e喅闂鎵嬫満娌℃湁缃戣嚜鍔ㄧ櫥褰曡繘鏉ワ紝榛樿浼犱笂涓�娆$殑浣忓畢id
+                //1锛岃В鍐虫墜鏈烘病鏈夊缃戯紝鑾峰彇涓嶅埌鐢电珯鍒楄〃锛岃嚜鍔ㄧ櫥褰曡繘鏉ワ紝榛樿浼犱笂涓�娆$殑浣忓畢id锛�
+                //2锛屼箣鍓嶇數绔欏垪琛ㄥ彧鏈変竴涓數绔欙紝鐒跺悗鍒犻櫎鎺夌數绔欙紝杩欐椂浣忓畢id杩樼紦瀛樼潃锛屽啀涓�娆¤繘鏉ワ紝榛樿浼犱笂涓�娆$殑浣忓畢id锛�
                 String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS_C + "?homeId=" + UserConfigManage.getInstance().getHomeId() + "&homeName=" + UserConfigManage.getInstance().getHomeName();
                 HdlUniLogic.getInstance().openUniMP(path, null);
             }
         } else {
+
             int select_home = 0;
-            for (int i = 0; i < HouseIdList.size(); i++) {
-                if (HouseIdList.get(i).getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
-                    select_home = i;
-                    break;
+            if (!TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {//鏈湴缂撳瓨浣忓畢id涓嶄负绌哄啀閬嶅巻鏌ユ壘
+                for (int i = 0; i < HouseIdList.size(); i++) {
+                    if (HouseIdList.get(i).getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
+                        select_home = i;
+                        break;
+                    }
                 }
             }
             HouseIdBean houseIdBean = HouseIdList.get(select_home);
@@ -494,6 +500,43 @@
 //                        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                         HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
 //                        HdlDeviceLogic.getInstance().searchAllNetworkGateway(null);//閫嗗彉鍣╳ifi鐘舵��-閲嶆柊鎼滅储涓�涓嬮�嗗彉鍣�-閲嶆柊鏇存柊杩炴帴鐘舵��
+                    } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeRefresh/up")) {
+                        try {
+                            //浣忓畢浜や粯鐘舵�佸洖婊氶�氱煡
+                            String[] topicArray = linkResponse.getTopic().split("/");
+                            if (topicArray.length < 2) {
+                                return;
+                            }
+                            final String HomeId = topicArray[1];
+                            //鍏堝垹闄ょ數绔�
+                            HdlResidenceLogic.getInstance().delHouseId(HomeId);
+                            List<HouseIdBean> localHouseIdList = HdlResidenceLogic.getInstance().getHouseIdList();
+                            if (localHouseIdList.isEmpty()) {
+                                JsonObject jsonObject = new JsonObject();
+                                jsonObject.addProperty("homeId", "");
+                                HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
+                                uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_DETAILS);
+                                uniCallBackBaseBean.setData(jsonObject);
+                                HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
+                            } else {
+                                if (HomeId.equals(UserConfigManage.getInstance().getHomeId()) || TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {
+                                    HouseIdBean houseIdBean = localHouseIdList.get(0);
+                                    HdlResidenceLogic.getInstance().switchHouse(houseIdBean, true);
+                                    JsonObject jsonObject = new JsonObject();
+                                    jsonObject.addProperty("homeId", houseIdBean.getHomeId());
+                                    jsonObject.addProperty("homeName", houseIdBean.getHomeName());
+                                    jsonObject.addProperty("powerStationStatus", houseIdBean.getPowerStationStatus() + "");
+                                    HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
+                                    uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_DETAILS);
+                                    uniCallBackBaseBean.setData(jsonObject);
+                                    HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
+                                }
+                            }
+                        } catch (Exception e) {
+                        }
+                        //閫氱煡鐢电珯鍒楄〃鏇存柊
+                        HdlCommonLogic.getInstance().postEventBus(ConstantManage.REFRESH_HOME_LIST, ConstantManage.REFRESH_HOME_LIST);
+                        HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true);
                     }
 
                 }
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListActivity.java
index 1c17dc3..8268619 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListActivity.java
@@ -7,6 +7,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
+import android.text.TextUtils;
 import android.view.View;
 
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -73,6 +74,8 @@
         getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
         //鍒濆鍖栨暟鎹�
         initData();
+        //璁剧疆褰撳墠鐢电珯閫変腑鐘舵��
+        setSelectState();
         //鍒濆鍖�
         initView();
         //鍒濆鍖栫晫闈㈢洃鍚櫒
@@ -81,10 +84,13 @@
 //        downReadData(false);
     }
 
+    /**
+     * 鍒濆鍖栫數绔欏垪琛ㄦ暟鎹�
+     */
     private void initData() {
         this.houseListBeanIDList = new ArrayList<>();
         this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseIdList());
-        setSelectState();
+//        setSelectState();
     }
 
     private void initEvent() {
@@ -149,14 +155,14 @@
                                 @Override
                                 public void onSuccess(List<GatewayBean> list) {
                                     //鍙戣捣鍒犻櫎鐢电珯鎸囦护
-                                    deleteResidence(houseIdBean.getHomeId(), list);
+                                    deleteResidence(position, houseIdBean, list);
 
                                 }
 
                                 @Override
                                 public void onFailure(HDLException e) {
                                     //鍙戣捣鍒犻櫎鐢电珯鎸囦护
-                                    deleteResidence(houseIdBean.getHomeId(), null);
+                                    deleteResidence(position, houseIdBean, null);
                                 }
                             });
 
@@ -283,7 +289,7 @@
                                 if (houseListAdapter != null) {
                                     //閲嶆柊鑾峰彇鍒楄〃鏁版嵁
                                     initData();
-                                    refreshDetails();
+                                    refreshDetails("");
                                     //鏇存柊鐢电珯閫変腑鐘舵��
                                     setSelectState();
                                     //鏇存柊鍒楄〃鏁版嵁
@@ -405,23 +411,25 @@
     /**
      * 鍒犻櫎鐢电珯
      *
-     * @param homeId 鐢电珯id
-     * @param list   閫嗗彉鍣ㄥ垪琛�
+     * @param position    绱㈠紩鍊�
+     * @param houseIdBean 鐢电珯id瀵硅薄
+     * @param list        閫嗗彉鍣ㄥ垪琛�
      */
-    private void deleteResidence(String homeId, List<GatewayBean> list) {
+    private void deleteResidence(final int position, final HouseIdBean houseIdBean, List<GatewayBean> list) {
 
         //鍒犻櫎浣忓畢
-        HdlResidenceLogic.getInstance().delResidence(homeId, new CloudCallBeak<Boolean>() {
+        HdlResidenceLogic.getInstance().delResidence(houseIdBean.getHomeId(), new CloudCallBeak<Boolean>() {
             @Override
             public void onSuccess(Boolean obj) {
                 hideLoading();
                 initializeInverter(list); //鍙戣捣鍒濆鍖栨寚浠ょ粰閫嗗彉鍣�;锛堟敞鎰�:鍓嶉潰宸插厛瑙g粦浜戠閫嗗彉鍣紝mqtt閫氶亾宸叉柇寮�锛屽垵濮嬪寲鍙兘鏄湰鍦板彂閫�(鍏堟悳绱㈠眬鍩熺綉閫嗗彉鍣ㄥ垪琛紝寤虹珛鏈湴閫氳閫氶亾)锛�
-                HdlResidenceLogic.getInstance().delHouseId(homeId);//鍒犻櫎鐢电珯缂撳瓨
+                HdlResidenceLogic.getInstance().delHouseId(houseIdBean.getHomeId());//鍒犻櫎鐢电珯缂撳瓨
                 initData();//鍒濆鍖栫紦瀛樻暟鎹�
-                refreshDetails();
-                //鏇存柊鐢电珯閫変腑鐘舵��
-                setSelectState();
-                houseListAdapter.setList(houseListBeanIDList); //鏇存柊鍒楄〃鏁版嵁
+                refreshDetails(houseIdBean.getHomeId());
+                setSelectState();//鏇存柊鐢电珯閫変腑鐘舵��
+                if (houseListAdapter != null) {
+                    houseListAdapter.setList(houseListBeanIDList); //鏇存柊鍒楄〃鏁版嵁
+                }
                 nullDataUpdateUi(houseListBeanIDList);//妫�娴嬫暟鎹槸鍚︿负绌�
             }
 
@@ -524,7 +532,7 @@
      * 閫氱煡uni鏇存柊鏁版嵁
      * 锛堝湪骞冲彴涓婂垹闄绔綋鍓嶄綇瀹呭悗,鑾峰彇鍒楄〃瀹炴敹瑕侀�氱煡uni閭h竟鏇存柊鐣岄潰鍗$墖锛�
      */
-    private void refreshDetails() {
+    private void refreshDetails(final String homeId) {
         try {
             List<HouseIdBean> localHouseIdList = HdlResidenceLogic.getInstance().getHouseIdList();
             if (localHouseIdList.isEmpty()) {
@@ -535,15 +543,7 @@
                 uniCallBackBaseBean.setData(jsonObject);
                 HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
             } else {
-                int select_home = -1;
-                for (int i = 0; i < localHouseIdList.size(); i++) {
-                    if (localHouseIdList.get(i).getHomeId().equals(UserConfigManage.getInstance().getHomeId())) {
-                        select_home = i;
-                        break;
-                    }
-                }
-                if (select_home == -1) {
-                    //鎵句笉鍒伴粯璁ょ涓�涓�
+                if (homeId.equals(UserConfigManage.getInstance().getHomeId()) || TextUtils.isEmpty(UserConfigManage.getInstance().getHomeId())) {
                     HouseIdBean houseIdBean = localHouseIdList.get(0);
                     HdlResidenceLogic.getInstance().switchHouse(houseIdBean, true);
                     JsonObject jsonObject = new JsonObject();
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsMoveActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsMoveActivity.java
index 04da689..ee1fdab 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsMoveActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsMoveActivity.java
@@ -15,14 +15,20 @@
 import com.hdl.photovoltaic.config.ConstantManage;
 import com.hdl.photovoltaic.databinding.ActivityPowerStationsMoveBinding;
 import com.hdl.photovoltaic.enums.ShowErrorMode;
+import com.hdl.photovoltaic.internet.HttpClient;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.other.HdlCommonLogic;
 import com.hdl.photovoltaic.other.HdlResidenceLogic;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
 import com.hdl.photovoltaic.ui.bean.HouseIdBean;
 import com.hdl.photovoltaic.ui.newC.adapter.HouseMoveAdapter;
+import com.hdl.photovoltaic.uni.HDLUniMP;
 import com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout;
 import com.hdl.photovoltaic.widget.refreshlayout.HDLRefreshViewHolder;
+import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -61,6 +67,7 @@
         this.houseListBeanIDList = new ArrayList<>();
         this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseIdList());
     }
+
 
     /**
      * 涓嬫媺鍒锋柊鐨勯�昏緫
@@ -137,7 +144,9 @@
                             //绉诲姩鐢电珯浣嶇疆
                             HdlResidenceLogic.getInstance().moveHouseId(houseIdBean.getHomeId());
                             initData();//鍒濆鍖栫紦瀛樻暟鎹�
-                            houseMoveAdapter.setList(houseListBeanIDList);//閲嶆柊鍒锋柊鍒楄〃
+                            if (houseMoveAdapter != null) {
+                                houseMoveAdapter.setList(houseListBeanIDList);//閲嶆柊鍒锋柊鍒楄〃
+                            }
                             nullDataUpdateUi(houseListBeanIDList);//妫�娴嬫暟鎹槸鍚︿负绌�
                             //閫氱煡澶栭潰鏇存柊浣嶇疆
                             HdlCommonLogic.getInstance().postEventBus(ConstantManage.REFRESH_HOME_LIST, ConstantManage.REFRESH_HOME_LIST);
@@ -238,5 +247,22 @@
         super.onDestroy();
     }
 
+    /**
+     * 鏀跺埌EventBUs閫氱煡
+     *
+     * @param eventBus 鏁版嵁
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onEventMessage(BaseEventBus eventBus) {
+        super.onEventMessage(eventBus);
+        if (ConstantManage.REFRESH_HOME_LIST.equals(eventBus.getTopic())) {
+            if (houseMoveAdapter != null) {
+                initData();
+                houseMoveAdapter.setList(houseListBeanIDList);
+            }
+            nullDataUpdateUi(houseListBeanIDList);//妫�娴嬫暟鎹槸鍚︿负绌�
+        }
+    }
+
 
 }
\ No newline at end of file

--
Gitblit v1.8.0