From 134c23aae116f94644d8331c096ff7085e43572b Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 16 四月 2025 13:19:51 +0800
Subject: [PATCH] 2025年04月16日13:19:36
---
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 2
app/build.gradle | 2
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 215 +++++++++++++++++++++++++++--------------------------
3 files changed, 111 insertions(+), 108 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 94f678b..c533df2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,7 +29,7 @@
applicationId "com.hdl.photovoltaic"
minSdk 23
targetSdk 34
- versionCode 4
+ versionCode 11
versionName "1.2.0"//鐗堟湰瑙勫垯1.3鏄骇鍝佸姛鑳借凯浠g敤鐨�,鏈�鍚庝竴浣�0鏄垜浠慨澶峛ug鐢ㄧ殑
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
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 eef84cd..8c22b11 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -38,6 +38,7 @@
import java.lang.reflect.Type;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -91,44 +92,58 @@
* 鑾峰彇褰撳墠浣忓畢鐨勯�嗗彉鍣ㄥ垪琛�(鍖呮嫭浠庣殑閫嗗彉鍣�)
*
* @param homeId 鐢电珯ID
- * @param cloudInverterDeviceList 杩滅涓婄殑閫嗗彉鍣ㄥ垪琛紙骞剁綉锛岀缃戯紝璐熻浇涓績锛�
+ * @param cloudInverterDeviceList 鍏冪涓婄殑閫嗗彉鍣ㄥ垪琛紙骞剁綉锛岀缃戯紝璐熻浇涓績锛�
*/
public List<GatewayBean> getCurrentHomeGatewayList(String homeId, List<CloudInverterDeviceBean> cloudInverterDeviceList) {
- List<GatewayBean> newList = new ArrayList<>();
- List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList();
- if (list.size() > 0) {
- for (int i = 0; i < list.size(); i++) {
- GatewayBean gatewayBean = list.get(i);
- if (!getGatewaySpk().contains(gatewayBean.getGatewayType())) {
- continue;
- }
- if (TextUtils.isEmpty(gatewayBean.getDevice_mac())
- || TextUtils.isEmpty(gatewayBean.getSid())
- || TextUtils.isEmpty(gatewayBean.getOid())) {
- continue;
- }
- //鐢╤omeId绛涢�夊綋鍓嶄綇瀹呯殑閫嗗彉鍣ㄥ垪琛�
- if (gatewayBean.getHomeId().equals(homeId)) {
- newList.add(gatewayBean);
- }
- }
- }
- //杩藉姞杩欎釜鏉′欢鏄洜涓轰笂闈㈡妸HDLLinkLocalGateway.getInstance().getGatewayList()鍒楄〃澶勭悊瀹屽悗,鎺ョ潃鎼滅储灞�鍩熺綉鍙堣繕鍘熷垪琛ㄦ暟鎹紝瀵艰嚧鍑虹幇鏃ф暟鎹紱
- if (cloudInverterDeviceList != null && cloudInverterDeviceList.size() > 0) {
- List<GatewayBean> checkNewList = new ArrayList<>();
- for (int i = 0; i < cloudInverterDeviceList.size(); i++) {
- CloudInverterDeviceBean cloudInverterDevice = cloudInverterDeviceList.get(i);
- for (GatewayBean gatewayBean : newList) {
- if (cloudInverterDevice.getOsn().equals(gatewayBean.getDevice_mac())) {
- checkNewList.add(gatewayBean);
- break;
+ try {
+ List<GatewayBean> newList = new ArrayList<>();
+ //浜戠鏈夎澶囧垪琛紝HDLLinkLocalGateway.getInstance().getGatewayList()娌℃湁锛屽嵆鏈湴娌℃湁锛岄噷闈細璋冪敤refreshGatewayCacheData()鏂规硶铏氭嫙涓�涓�嗗彉鍣ㄥ疄浣撴坊鍔犳湰鍦板垪琛ㄩ噷闈紱
+ List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList();
+ if (list.size() > 0) {
+ for (int i = 0; i < list.size(); i++) {
+ GatewayBean gatewayBean = list.get(i);
+ if (!getGatewaySpk().contains(gatewayBean.getGatewayType())) {
+ continue;
+ }
+ if (TextUtils.isEmpty(gatewayBean.getDevice_mac())
+ || TextUtils.isEmpty(gatewayBean.getSid())
+ || TextUtils.isEmpty(gatewayBean.getOid())) {
+ continue;
+ }
+ //鐢╤omeId绛涢�夊綋鍓嶄綇瀹呯殑閫嗗彉鍣ㄥ垪琛�
+ if (gatewayBean.getHomeId().equals(homeId)) {
+ newList.add(gatewayBean);
}
}
}
- newList.clear();
- newList.addAll(checkNewList);
+ //鏈夊缃戯紝浠ヤ簯绔澶囧垪琛ㄤ负鍑�;浜戠娌℃湁锛屾湰鍦板瓨鍦紝鍒欏垹闄ゆ湰鍦帮紱鍚﹀垯锛屾病鏈夊缃戝彧鏈夊眬鍩熺綉锛屼互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓�
+ //杩藉姞杩欎釜鏉′欢鏄洜涓轰笂闈㈡妸HDLLinkLocalGateway.getInstance().getGatewayList()鍒楄〃澶勭悊瀹屽悗,鎺ョ潃鎼滅储灞�鍩熺綉鍙堣繕鍘熷垪琛ㄦ暟鎹紝瀵艰嚧鍑虹幇鏃ф暟鎹紱
+ if (cloudInverterDeviceList != null && cloudInverterDeviceList.size() > 0) {
+ List<GatewayBean> checkNewList = new ArrayList<>();
+ for (int i = 0; i < cloudInverterDeviceList.size(); i++) {
+ CloudInverterDeviceBean cloudInverterDevice = cloudInverterDeviceList.get(i);
+ for (GatewayBean gatewayBean : newList) {
+ if (cloudInverterDevice.getOsn().equals(gatewayBean.getDevice_mac())) {
+ checkNewList.add(gatewayBean);
+ break;
+ }
+ }
+ }
+ newList.clear();
+ newList.addAll(checkNewList);
+ }
+// // 灏唋ist2鐨勫厓绱犲悎骞跺埌list1鐨勫ご閮�
+// List<GatewayBean> mockData = getGatewayDeviceListMockData(3);
+// if (mockData.size() > 0) {
+// for (GatewayBean mockDatum : mockData) {
+// newList.add(0, mockDatum);
+// }
+// }
+
+ return newList;
+ } catch (Exception e) {
+ return new ArrayList<>();
}
- return newList;
}
@@ -142,7 +157,7 @@
if (newGatewayBean == null || TextUtils.isEmpty(homeId)) {
return;
}
- List<GatewayBean> list = getCurrentHomeGatewayList(homeId,null);
+ List<GatewayBean> list = getCurrentHomeGatewayList(homeId, null);
if (list == null || list.size() == 0) {
return;
}
@@ -171,7 +186,7 @@
if (TextUtils.isEmpty(mac)) {
return;
}
- List<GatewayBean> list = getCurrentHomeGatewayList(homeId,null);
+ List<GatewayBean> list = getCurrentHomeGatewayList(homeId, null);
if (list == null || list.size() == 0) {
return;
}
@@ -198,7 +213,7 @@
if (TextUtils.isEmpty(deviceId)) {
return;
}
- List<GatewayBean> list = getCurrentHomeGatewayList(homeId,null);
+ List<GatewayBean> list = getCurrentHomeGatewayList(homeId, null);
if (list == null || list.size() == 0) {
return;
}
@@ -386,7 +401,7 @@
updateOidAdd(homeId, newOidList, new CloudCallBeak<Boolean>() {
@Override
public void onSuccess(Boolean obj) {
- HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�---浣忓畢id:" + homeId + "---mac:" + gatewayBean.getDevice_mac(), true);
+ HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�(澧為噺)---浣忓畢id:" + homeId + "---mac:" + gatewayBean.getDevice_mac() + "---\r\n鏁版嵁---" + new Gson().toJson(oidBeanList), true);
}
@Override
@@ -467,8 +482,16 @@
public void onSuccess(String str) {
if (cloudCallBeak != null) {
cloudCallBeak.onSuccess(true);
- //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔�
- List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId,null);
+ List<GatewayBean> list = new ArrayList<>();
+ GatewayBean gatewayBean = new GatewayBean();
+ gatewayBean.setHomeId(homeId);
+ gatewayBean.setDevice_mac(mac);
+ gatewayBean.setSpk(spk);
+ gatewayBean.setSid(sid);
+ gatewayBean.setOid(oid);
+ gatewayBean.setDevice_name(name);
+ list.add(gatewayBean);
+ //娣诲姞璁惧鎴愬姛鍚庯紝涓婁紶oid鍒楄〃鍒颁簯绔�
uploadOidDataToCloud(homeId, list, true, null);
}
}
@@ -1100,8 +1123,8 @@
}
/**
- * 鑾峰彇閫嗗彉鍣ㄥ垪琛�(鏁村悎浜戠鍜屾湰鍦板垪琛�)
- * 娉ㄦ剰:鏈夊缃戯紝浠ヤ簯绔澶囦负鍑�,鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘惁鍒欙紝娌℃湁澶栫綉鍙湁灞�鍩熺綉锛屼互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓�
+ * 鑾峰彇閫嗗彉鍣ㄥ垪琛�,鏁村悎浜戠閫嗗彉鍣ㄥ垪琛ㄥ拰鏈湴閫嗗彉鍣ㄥ垪琛�(璁惧绫诲瀷鏈�:骞剁綉閫嗗彉鍣紝绂荤嚎閫嗗彉鍣紝璐熻浇涓績璁惧);
+ * 娉ㄦ剰:鏈夊缃戯紝浠ヤ簯绔澶囧垪琛ㄤ负鍑�;浜戠娌℃湁锛屾湰鍦板瓨鍦紝鍒欏垹闄ゆ湰鍦帮紱鍚﹀垯锛屾病鏈夊缃戝彧鏈夊眬鍩熺綉锛屼互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓�
*
* @param homeId 浣忓畢id
* @param cloudCallBeak 杩斿洖閫嗗彉鍣ㄥ垪琛�
@@ -1110,7 +1133,6 @@
searchCurrentHomeGateway(homeId, new GatewayCallBack() {
@Override
public void onSuccess(List<GatewayBean> gatewayBeanList) {
- //灞�鍩熺綉鏈�2绉嶆儏鍐�(1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�2:鏈夊眬鍩熺綉锛屾病鏈夊缃�);
//鍚戜簯绔幏鍙栭�嗗彉鍣ㄥ垪琛�
getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
@Override
@@ -1123,38 +1145,14 @@
//鍚堝苟璐熻浇涓績璁惧鍒楄〃锛岀劧鍚庡湪涓�璧峰仛澶勭悊
inverterDeviceList.addAll(loadCentreDeviceList);
}
- List<String> removeMacList = new ArrayList<>();
- for (int j = 0; j < HDLLinkLocalGateway.getInstance().getGatewayList().size(); j++) {
- GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayList().get(j);
- if (queryMacInverter(inverterDeviceList, gatewayBean.getDevice_mac())) {
- //鏈湴鏈夛紝浜戠娌℃湁,鍒犻櫎鏈湴锛�
- removeMacList.add(gatewayBean.getDevice_mac());
- }
- }
- for (int i = 0; i < removeMacList.size(); i++) {
- //鍒犻櫎鏈湴鐨勯�嗗彉鍣�
- removeLocalInverter(removeMacList.get(i));
- }
- //鎯呭喌1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�
+ //璁剧疆璁惧鐨勮繙绋嬩俊鎭�
setDeviceRemoteInfo(inverterDeviceList, homeId, cloudCallBeak);
}
@Override
public void onFailure(HDLException e) {
//鍚戜簯绔幏鍙栬礋杞戒腑蹇冭澶囧垪琛ㄥけ璐ュ悗锛屼粛鐒跺鐞嗛�嗗彉鍣ㄨ澶囧垪琛�
- List<String> removeMacList = new ArrayList<>();
- for (int j = 0; j < HDLLinkLocalGateway.getInstance().getGatewayList().size(); j++) {
- GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayList().get(j);
- if (queryMacInverter(inverterDeviceList, gatewayBean.getDevice_mac())) {
- //浜戠娌℃湁,鏈湴鏈夛紝鍒犻櫎鏈湴锛�
- removeMacList.add(gatewayBean.getDevice_mac());
- }
- }
- for (int i = 0; i < removeMacList.size(); i++) {
- //鍒犻櫎鏈湴鐨勯�嗗彉鍣�
- removeLocalInverter(removeMacList.get(i));
- }
- //鎯呭喌1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�
+ //璁剧疆璁惧鐨勮繙绋嬩俊鎭�
setDeviceRemoteInfo(inverterDeviceList, homeId, cloudCallBeak);
}
});
@@ -1164,7 +1162,6 @@
@Override
public void onFailure(HDLException e) {
- ///鎯呭喌2:鏈夊眬鍩熺綉锛屾病鏈夊缃�;
//鏈湴鏈夐�嗗彉鍣ㄥ垪琛�,鑾峰彇浜戠缁戝畾閫嗗彉鍣ㄥけ璐�,榛樿杩斿洖鏈湴閫嗗彉鍣ㄥ垪琛�;
//鍚戜簯绔幏鍙栬礋杞戒腑蹇冨垪琛�
getLoadCentreDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
@@ -1172,27 +1169,12 @@
public void onSuccess(List<CloudInverterDeviceBean> loadCentreDeviceList) {
if (loadCentreDeviceList == null) {
if (cloudCallBeak != null) {
+ //娌℃湁鏁版嵁锛岄粯璁よ繑鍥炴湰鍦伴�嗗彉鍣ㄥ垪琛�;
cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId, null));
}
return;
}
- List<String> removeMacList = new ArrayList<>();
- for (int j = 0; j < HDLLinkLocalGateway.getInstance().getGatewayList().size(); j++) {
- GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayList().get(j);
- if (!isLoadCenterSpk(gatewayBean.getSpk())) {
- //涓嶆槸璐熻浇涓績鐨剆pk涓嶅仛澶勭悊锛�
- continue;
- }
- if (queryMacInverter(loadCentreDeviceList, gatewayBean.getDevice_mac())) {
- //浜戠娌℃湁,鏈湴鏈夛紝鍒犻櫎鏈湴锛�
- removeMacList.add(gatewayBean.getDevice_mac());
- }
- }
- for (int i = 0; i < removeMacList.size(); i++) {
- //鍒犻櫎鏈湴鐨勯�嗗彉鍣�
- removeLocalInverter(removeMacList.get(i));
- }
- //鎯呭喌1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�
+ //璁剧疆璁惧鐨勮繙绋嬩俊鎭�
setDeviceRemoteInfo(loadCentreDeviceList, homeId, cloudCallBeak);
}
@@ -1205,16 +1187,14 @@
}
});
-// if (cloudCallBeak != null) {
-// cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId));
-// }
}
});
}
@Override
public void onError(HDLLinkException e) {
- //澶栫綉鍙湁1绉嶆儏鍐�(鏈湴鎼滅储閫嗗彉鍣ㄥ垪琛ㄥけ璐ヤ簡)
+ //澶栫綉杩涙潵鍏堛�愰粯璁ゃ�戞竻绌烘湰鍦伴�嗗彉鍣ㄥ垪琛�
+ HDLLinkLocalGateway.getInstance().getGatewayList().clear();
//鍚戜簯绔幏鍙栭�嗗彉鍣ㄥ垪琛�
getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
@Override
@@ -1223,30 +1203,26 @@
getLoadCentreDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
@Override
public void onSuccess(List<CloudInverterDeviceBean> loadCentreDeviceList) {
- //澶栫綉杩涙潵鍏堛�愰粯璁ゃ�戞竻绌烘湰鍦伴�嗗彉鍣ㄥ垪琛�
- HDLLinkLocalGateway.getInstance().getGatewayList().clear();
+
List<CloudInverterDeviceBean> newList = new ArrayList<>();
if (cloudInverterList != null) {
+ //娣诲姞閫嗗彉鍣ㄨ澶囧垪琛�
newList.addAll(cloudInverterList);
}
if (loadCentreDeviceList != null) {
+ //娣诲姞璐熻浇涓績璁惧鍒楄〃
newList.addAll(loadCentreDeviceList);
}
- //閫嗗彉鍣ㄥ垪琛ㄥ拰璐熻浇涓績鍒楄〃鐩稿姞
+ //鏁村悎璁惧鍒楄〃鍚�,鍐嶄竴璧疯缃澶囩殑杩滅▼淇℃伅
setDeviceRemoteInfo(newList, homeId, cloudCallBeak);
}
@Override
public void onFailure(HDLException e) {
- //澶栫綉杩涙潵鍏堛�愰粯璁ゃ�戞竻绌烘湰鍦伴�嗗彉鍣ㄥ垪琛�
- //鍚戜簯绔幏鍙栬礋杞戒腑蹇冨垪琛ㄥけ璐�,鐩存帴杩斿洖閫嗗彉鍣ㄥ垪琛紱
- HDLLinkLocalGateway.getInstance().getGatewayList().clear();
+ //璁剧疆璁惧鐨勮繙绋嬩俊鎭�
setDeviceRemoteInfo(cloudInverterList, homeId, cloudCallBeak);
}
});
-// //澶栫綉杩涙潵鍏堛�愰粯璁ゃ�戞竻绌烘湰鍦伴�嗗彉鍣ㄥ垪琛�
-// HDLLinkLocalGateway.getInstance().getGatewayList().clear();
-// setDeviceRemoteInfo(list, homeId, cloudCallBeak);
}
@Override
@@ -1256,22 +1232,18 @@
getLoadCentreDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
@Override
public void onSuccess(List<CloudInverterDeviceBean> loadCentreDeviceList) {
- //澶栫綉杩涙潵鍏堛�愰粯璁ゃ�戞竻绌烘湰鍦伴�嗗彉鍣ㄥ垪琛�
- HDLLinkLocalGateway.getInstance().getGatewayList().clear();
- //閫嗗彉鍣ㄥ垪琛ㄥ拰璐熻浇涓績鍒楄〃
+ //璁剧疆璁惧鐨勮繙绋嬩俊鎭�
setDeviceRemoteInfo(loadCentreDeviceList, homeId, cloudCallBeak);
}
@Override
public void onFailure(HDLException e) {
+ //閮芥槸鑾峰彇澶辫触鐨勮瘽,鐩存帴杩斿洖绌哄垪琛�;
if (cloudCallBeak != null) {
- cloudCallBeak.onFailure(e);
+ cloudCallBeak.onSuccess(new ArrayList<>());
}
}
});
-// if (cloudCallBeak != null) {
-// cloudCallBeak.onFailure(e);
-// }
}
});
}
@@ -1291,7 +1263,6 @@
if (cloudCallBeak != null) {
cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId, list));
}
-
return;
}
AtomicInteger atomicInteger = new AtomicInteger(0);
@@ -1826,6 +1797,38 @@
}
/**
+ * 妯℃嫙閫嗗彉鍣ㄨ澶囧垪琛�
+ *
+ * @param sum 妯℃嫙澶氬皯涓�
+ * @return 杩斿洖閫嗗彉鍣ㄥ垪琛�
+ */
+ public List<GatewayBean> getGatewayDeviceListMockData(int sum) {
+
+ try {
+ List<GatewayBean> list = new ArrayList<>();
+ for (int i = 0; i < sum; i++) {
+ String spk = getGatewaySpk().get(i % getGatewaySpk().size());
+ GatewayBean gatewayBean = new GatewayBean();
+ gatewayBean.setHomeId("100000000" + i);
+ gatewayBean.setDevice_mac("200000000" + i);
+ gatewayBean.setSpk(spk);
+ gatewayBean.setGateway_type(spk);
+ gatewayBean.setMaster("true");
+ gatewayBean.setSid("300000000" + i);
+ gatewayBean.setOid("400000000" + i);
+ gatewayBean.setGatewayId("500000000" + i);
+ gatewayBean.setDevice_name("妯℃嫙-" + i + "(" + spk + ")");
+ gatewayBean.setDeviceStatus(5);//榛樿閮芥槸绂荤嚎卢
+ list.add(gatewayBean);
+ }
+ return list;
+ } catch (Exception ignored) {
+ return new ArrayList<>();
+ }
+
+ }
+
+ /**
* 閫嗗彉鍣╯pk
*/
public final String INVERTER_DEVICE_SPK = "energy.hdl_inverter";
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
index 5f57a00..1f976e4 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -906,7 +906,7 @@
if (callback != null) {
uniSuccessCallback(type, null, callback);
}
- List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId,null);
+ List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId, null);
for (int i = 0; i < list.size(); i++) {
GatewayBean gatewayBean = list.get(i);
HdlDeviceLogic.getInstance().initializeInverter(gatewayBean.getDevice_mac(), null);
--
Gitblit v1.8.0