From 3ec7de773bff5582411c6f1f659d35cf8fb1734a Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期二, 16 七月 2024 15:13:51 +0800
Subject: [PATCH] Merge branch 'feature/v1.4.1'

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java |  155 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 124 insertions(+), 31 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
index efce83e..104b350 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -137,7 +137,7 @@
      * @param homeId 鐢电珯id
      * @param mac    閫嗗彉鍣╩ac
      */
-    public void removeLocalCacheMemoryGateway(String homeId, String mac) {
+    public void removeLocalCacheMemoryGatewayToMac(String homeId, String mac) {
         if (TextUtils.isEmpty(mac)) {
             return;
         }
@@ -157,6 +157,55 @@
             list.remove(index);
         }
     }
+
+    /**
+     * 绉婚櫎缂撳瓨鍒楄〃閲岄潰閫嗗彉鍣�
+     *
+     * @param homeId   鐢电珯id
+     * @param deviceId 閫嗗彉鍣╠eviceId
+     */
+    public void removeLocalCacheMemoryGatewayToDeviceId(String homeId, String deviceId) {
+        if (TextUtils.isEmpty(deviceId)) {
+            return;
+        }
+        List<GatewayBean> list = getCurrentHomeGatewayList(homeId);
+        if (list == null || list.size() == 0) {
+            return;
+        }
+        int index = -1;
+        for (int i = 0; i < list.size(); i++) {
+            GatewayBean gatewayBean = list.get(i);
+            if (gatewayBean.getDeviceId().equals(deviceId)) {
+                index = i;
+                break;
+            }
+        }
+        if (index > 0) {
+            list.remove(index);
+        }
+    }
+
+    /**
+     * 娣诲姞銆愯澶囧垪琛ㄣ�戝埌鏈湴缂撳瓨
+     *
+     * @param list -璁惧鍒楄〃
+     */
+    public void setListDevice(List<CloudInverterDeviceBean> list) {
+        try {
+            if (list == null || list.size() == 0) {
+                return;
+            }
+            if (this.mListDevice.size() == 0) {
+                this.mListDevice.addAll(list);
+                return;
+            }
+            for (int i = 0; i < list.size(); i++) {
+                this.setSingleDevice(list.get(i));
+            }
+        } catch (Exception ignored) {
+        }
+    }
+
 
     /**
      * 鑾峰彇璁惧鍒楄〃(瀹夎鍟�)
@@ -198,28 +247,6 @@
                 }
             }
         });
-    }
-
-
-    /**
-     * 娣诲姞銆愯澶囧垪琛ㄣ�戝埌鏈湴缂撳瓨
-     *
-     * @param list -璁惧鍒楄〃
-     */
-    public void setListDevice(List<CloudInverterDeviceBean> list) {
-        try {
-            if (list == null || list.size() == 0) {
-                return;
-            }
-            if (this.mListDevice.size() == 0) {
-                this.mListDevice.addAll(list);
-                return;
-            }
-            for (int i = 0; i < list.size(); i++) {
-                this.setSingleDevice(list.get(i));
-            }
-        } catch (Exception ignored) {
-        }
     }
 
     /**
@@ -403,12 +430,26 @@
                     cloudCallBeak.onSuccess(true);
                     //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔�
                     List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId);
-                    uploadOidDataToCloud(UserConfigManage.getInstance().getHomeId(), list, true, null);
+                    uploadOidDataToCloud(homeId, list, true, null);
                 }
             }
 
             @Override
             public void onFailure(HDLException e) {
+                //娣诲姞閫嗗彉鍣ㄥけ璐ュ悗鍒濆鍖栭�嗗彉鍣�
+                HdlLogLogic.print("娣诲姞閫嗗彉鍣ㄥけ璐ュ悗寮�濮嬪垵濮嬪寲閫嗗彉鍣�-->", true);
+                HdlDeviceLogic.getInstance().initializeInverter(mac, new LinkCallBack<Boolean>() {
+                    @Override
+                    public void onSuccess(Boolean obj) {
+                        HdlLogLogic.print("鍒濆鍖栭�嗗彉鍣ㄦ垚鍔�-->mac:" + mac, true);
+                    }
+
+                    @Override
+                    public void onError(HDLLinkException e) {
+                        HdlLogLogic.print("鍒濆鍖栭�嗗彉鍣ㄥけ璐�-->mac:" + mac, true);
+                    }
+                });
+
                 if (cloudCallBeak != null) {
                     cloudCallBeak.onFailure(e);
                 }
@@ -453,9 +494,12 @@
 
             @Override
             public void onFailure(HDLException e) {
+
                 if (cloudCallBeak != null) {
                     cloudCallBeak.onFailure(e);
                 }
+
+
             }
         });
     }
@@ -672,6 +716,42 @@
                     cloudCallBeak.onFailure(e);
                 }
                 HdlLogLogic.print("澧為噺娣诲姞oid鍒颁簯绔け璐�---" + e.getMsg() + "(" + e.getCode() + ")", true);
+            }
+        });
+
+    }
+
+    /**
+     * 淇敼璁惧鍚嶇О閫嗗彉鍣˙MS鐢垫睜鍖�
+     * 鎻忚堪:  淇敼璁惧鍚嶇О锛屾敮鎸侀�嗗彉鍣紝BMS锛岀數姹犲寘璁惧鍚嶇О淇敼
+     *
+     * @param homeId        浣忓畢id
+     * @param deviceType    璁惧绫诲瀷(INV:閫嗗彉鍣�,BMS:BMS鎺у埗鐩�,BATTERY:鐢垫睜鍗曞厓)
+     * @param deviceId      璁惧id(deviceType = INV 鏄�嗗彉鍣╠eviceId;deviceType = BMS 鏄疊MS鐨刣eviceOidId;deviceType = BATTERY 鏄數姹犲寘鐨刣eviceOidId)
+     * @param cloudCallBeak 鍥炶皟update
+     */
+    public void setRename(String homeId, String deviceType, String deviceId, String name, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_Device_Rename;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("name", name);
+        json.addProperty("deviceType", deviceType);//璁惧绫诲瀷(INV:閫嗗彉鍣�,BMS:BMS鎺у埗鐩�,BATTERY:鐢垫睜鍗曞厓)
+        json.addProperty("deviceId", deviceId);//璁惧id(deviceType = INV 鏄�嗗彉鍣╠eviceId;deviceType = BMS 鏄疊MS鐨刣eviceOidId;deviceType = BATTERY 鏄數姹犲寘鐨刣eviceOidId)
+        // json.addProperty("zoneType", "password");//鍖哄煙
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String str) {
+
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
             }
         });
 
@@ -961,20 +1041,32 @@
 
     /**
      * 鑾峰彇閫嗗彉鍣ㄥ垪琛�(鏁村悎浜戠鍜屾湰鍦板垪琛�)
-     * 娉ㄦ剰:鏈夊缃戯紝浠ヤ簯绔澶囦负鍑�,鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘唴缃戯紝浠ユ湰鍦颁负涓�,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓紱
+     * 娉ㄦ剰:鏈夊缃戯紝浠ヤ簯绔澶囦负鍑�,鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘惁鍒欙紝娌℃湁澶栫綉鍙湁灞�鍩熺綉锛屼互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓�
      *
      * @param homeId        浣忓畢id
      * @param cloudCallBeak 杩斿洖閫嗗彉鍣ㄥ垪琛�
      */
     public void getCurrentHomeLocalAndCloudGatewayList(String homeId, CloudCallBeak<List<GatewayBean>> cloudCallBeak) {
-        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() {
+        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(homeId, new GatewayCallBack() {
             @Override
             public void onSuccess(List<GatewayBean> gatewayBeanList) {
                 //灞�鍩熺綉鏈�2绉嶆儏鍐�(1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�2:鏈夊眬鍩熺綉锛屾病鏈夊缃�);
                 HdlDeviceLogic.getInstance().getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
                     @Override
                     public void onSuccess(List<CloudInverterDeviceBean> list) {
-                        ///鎯呭喌1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�
+                        List<String> removeSidList = new ArrayList<>();
+                        for (int j = 0; j < HDLLinkLocalGateway.getInstance().getGatewayList().size(); j++) {
+                            GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayList().get(j);
+                            if (!querySidInverter(list, gatewayBean.getSid())) {
+                                //鏈湴鏈夛紝浜戠娌℃湁,鍒犻櫎鏈湴锛�
+                                removeSidList.add(gatewayBean.getSid());
+                            }
+                        }
+                        for (int i = 0; i < removeSidList.size(); i++) {
+                            //鍒犻櫎鏈湴鐨勯�嗗彉鍣�
+                            removeLocalInverter(removeSidList.get(i));
+                        }
+                        //鎯呭喌1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�
                         setDeviceRemoteInfo(list, homeId, cloudCallBeak);
                     }
 
@@ -1169,10 +1261,10 @@
      *
      * @param gatewayCallBack -
      */
-    public void searchCurrentHomeGateway(GatewayCallBack gatewayCallBack) {
+    public void searchCurrentHomeGateway(String homeId, GatewayCallBack gatewayCallBack) {
         List<String> spks = this.getGatewaySpk();
         //缃戝叧鎼滅储
-        HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(UserConfigManage.getInstance().getHomeId(), spks, true, gatewayCallBack);
+        HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(homeId, spks, true, gatewayCallBack);
     }
 
     /**
@@ -1193,8 +1285,8 @@
      * @param deviceMac 璁惧mac锛�
      * @param callBeak  杩斿洖 true=鏈湴杩炴帴;false=杩滅▼;
      */
-    public void isLocalConnect(String deviceMac, CloudCallBeak<Boolean> callBeak) {
-        searchCurrentHomeGateway(new GatewayCallBack() {
+    public void isLocalConnect(String homeId, String deviceMac, CloudCallBeak<Boolean> callBeak) {
+        searchCurrentHomeGateway(homeId, new GatewayCallBack() {
             @Override
             public void onSuccess(List<GatewayBean> gatewayBeanList) {
                 if (gatewayBeanList == null || gatewayBeanList.size() == 0) {
@@ -1322,6 +1414,7 @@
         gatewayBean.setDeviceType(cloudInverterDeviceBean.getDeviceType());//璁惧绫诲瀷(INV:閫嗗彉鍣�;BMS:BMS鎺у埗鐩�;BATTERY:鐢垫睜鍗曞厓)
         gatewayBean.setAddresses(cloudInverterDeviceBean.getAddresses());//瀛愮綉鍙�/璁惧鍙�,閫嗗彉鍣ㄥ湴鍧�
         gatewayBean.setPowerPvNow(cloudInverterDeviceBean.getPowerPvNow());//鍙戠數鍔熺巼
+        gatewayBean.setOutputActivePower(cloudInverterDeviceBean.getOutputActivePower());//閫嗗彉鍣ㄨ緭鍑烘湁鍔熷姛鐜�
         gatewayBean.setTotalElectricityPvToday(cloudInverterDeviceBean.getTotalElectricityPvToday());//浠婃棩鍙戠數閲�
         if (!TextUtils.isEmpty(cloudInverterDeviceBean.getOmodel())) {
             //鍙兘璁惧娌℃湁涓婃姤缁欎簯绔�,寤鸿缁戝畾閫嗗彉鍣ㄦ椂鍊欒拷鍔犱竴涓弬鏁�;

--
Gitblit v1.8.0