From b1303ee6ba15d8202f7fe95037267feaa4520fc5 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期日, 28 四月 2024 15:55:48 +0800 Subject: [PATCH] 2024年04月28日15:55:42 --- app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 216 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 158 insertions(+), 58 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 cb3bbd3..efd2bd2 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -67,6 +67,11 @@ return sHdlDeviceLogic; } + public static final String kWp = "kWp"; + public static final String kWh = "kW.h"; + + public static final String kW = "kW"; + /** * 鑾峰彇褰撳墠浣忓畢鐨勯�嗗彉鍣ㄥ垪琛�(鍖呮嫭浠庣殑閫嗗彉鍣�) @@ -89,36 +94,129 @@ return newList; } + /** + * 娣诲姞閫嗗彉鍣ㄥ埌缂撳瓨鍒楄〃閲岄潰鍘� + * + * @param homeId 鐢电珯id + * @param newGatewayBean 閫嗗彉鍣ㄥ璞� + */ + public void addGatewayToLocalCacheMemory(String homeId, GatewayBean newGatewayBean) { + if (newGatewayBean == null || TextUtils.isEmpty(homeId)) { + 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.getDevice_mac().equals(newGatewayBean.getDevice_mac())) { + index = i; + break; + } + } + if (index > 0) { + list.remove(index); + list.add(index, newGatewayBean); + + } + } + + /** + * 绉婚櫎缂撳瓨鍒楄〃閲岄潰閫嗗彉鍣� + * + * @param homeId 鐢电珯id + * @param mac 閫嗗彉鍣╩ac + */ + public void removeLocalCacheMemoryGateway(String homeId, String mac) { + if (TextUtils.isEmpty(mac)) { + 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.getDevice_mac().equals(mac)) { + index = i; + break; + } + } + if (index > 0) { + list.remove(index); + } + } + /** * 閫嗗彉鍣ㄤ笂浼犳暟鎹埌浜戠(鍖呮嫭:sid锛宱id) * - * @param homeId 浣忓畢id - * @param list 閫嗗彉鍣ㄥ垪琛� + * @param homeId 浣忓畢id + * @param list 閫嗗彉鍣ㄥ垪琛� + * @param whetherToAdd true琛ㄧず鐢ㄥ閲�,false琛ㄧず鐢ㄥ叏閲� */ - public void uploadDataToCloud(String homeId, List<GatewayBean> list, CloudCallBeak<Boolean> callBeak) { + public void uploadOidDataToCloud(String homeId, List<GatewayBean> list, boolean whetherToAdd, CloudCallBeak<Boolean> callBeak) { if (list == null || list.size() == 0) { return; } - List<OidBean> oidList = new ArrayList<>(); - AtomicInteger atomicInteger = new AtomicInteger(0); - for (int i = 0; i < list.size(); i++) { - GatewayBean gatewayBean = list.get(i); - if (gatewayBean == null || TextUtils.isEmpty(gatewayBean.getDevice_mac())) { - continue; - } - getInverterOidList(gatewayBean.getDevice_mac(), new LinkCallBack<List<OidBean>>() { - @Override - public void onSuccess(List<OidBean> oidBeanList) { - atomicInteger.set(atomicInteger.get() + 1); - if (oidBeanList == null) { - return; - } - oidList.addAll(oidBeanList); - if (atomicInteger.get() == list.size()) { - if (oidList.size() == 0) { + if (whetherToAdd) { + for (int i = 0; i < list.size(); i++) { + GatewayBean gatewayBean = list.get(i); + if (gatewayBean == null || TextUtils.isEmpty(gatewayBean.getDevice_mac())) { + continue; + } + getInverterOidList(gatewayBean.getDevice_mac(), new LinkCallBack<List<OidBean>>() { + @Override + public void onSuccess(List<OidBean> oidBeanList) { + if (oidBeanList == null) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "--->鏁版嵁鏄痭ull", true); return; } + //澧為噺娣诲姞oid + updateOidAdd(homeId, oidBeanList, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�(澧為噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "--->\r\n鏁版嵁--->" + new Gson().toJson(oidBeanList), true); + } + + @Override + public void onFailure(HDLException e) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔け璐�(澧為噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); + } + }); + + } + + @Override + public void onError(HDLLinkException e) { + } + }); + SystemClock.sleep(200); + } + } else { + //鍙湁杩涘叆璇︽儏鐣岄潰 + List<OidBean> newOidList = new ArrayList<>(); + AtomicInteger atomicInteger = new AtomicInteger(0); + for (int i = 0; i < list.size(); i++) { + GatewayBean gatewayBean = list.get(i); + if (gatewayBean == null || TextUtils.isEmpty(gatewayBean.getDevice_mac())) { + continue; + } + getInverterOidList(gatewayBean.getDevice_mac(), new LinkCallBack<List<OidBean>>() { + @Override + public void onSuccess(List<OidBean> oidBeanList) { + atomicInteger.set(atomicInteger.get() + 1); + if (oidBeanList == null) { + return; + } + newOidList.addAll(oidBeanList); + if (atomicInteger.get() == list.size()) { + if (newOidList.size() == 0) { + return; + } // //澧為噺娣诲姞oid // updateOidAdd(homeId, oidList, new CloudCallBeak<Boolean>() { // @Override @@ -132,46 +230,47 @@ // } // }); - //鍏ㄩ儴鑾峰彇鍚庡啀涓婁紶 - fullUpdateOid(homeId, oidList, new CloudCallBeak<Boolean>() { - @Override - public void onSuccess(Boolean obj) { - HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac(), true); - } + //鍏ㄩ儴鑾峰彇鍚庡啀涓婁紶 + fullUpdateOid(homeId, newOidList, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�(鍏ㄩ噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "--->\r\n鏁版嵁--->" + new Gson().toJson(newOidList), true); + } - @Override - public void onFailure(HDLException e) { - HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔け璐�--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); - } - }); - } - } - - @Override - public void onError(HDLLinkException e) { - atomicInteger.set(atomicInteger.get() + 1); - if (oidList.size() == 0) { - HdlLogLogic.print("鑾峰彇閫嗗彉鍣╫id鍒楄〃澶辫触--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); - return; - } - //澧為噺娣诲姞oid - updateOidAdd(homeId, oidList, new CloudCallBeak<Boolean>() { - @Override - public void onSuccess(Boolean obj) { - HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac(), true); + @Override + public void onFailure(HDLException e) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔け璐�(鍏ㄩ噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); + } + }); } + } - @Override - public void onFailure(HDLException e) { - HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔け璐�--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); + @Override + public void onError(HDLLinkException e) { + atomicInteger.set(atomicInteger.get() + 1); + if (atomicInteger.get() == list.size()) { + if (newOidList.size() == 0) { + HdlLogLogic.print("鑾峰彇閫嗗彉鍣╫id鍒楄〃澶辫触--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); + return; + } + //澧為噺娣诲姞oid + updateOidAdd(homeId, newOidList, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔垚鍔�(澧為噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "--->\r\n鏁版嵁--->" + new Gson().toJson(newOidList), true); + } + + @Override + public void onFailure(HDLException e) { + HdlLogLogic.print("涓婁紶oid鍒楄〃鍒颁簯绔け璐�(澧為噺)--->浣忓畢id:" + homeId + "--->mac:" + gatewayBean.getDevice_mac() + "-->" + e.getMsg() + "(" + e.getCode() + ")", true); + } + }); } - }); - } - }); - SystemClock.sleep(200); + } + }); + SystemClock.sleep(200); + } } - - } /** @@ -203,7 +302,7 @@ cloudCallBeak.onSuccess(true); //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔� List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(homeId); - uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), list, null); + uploadOidDataToCloud(UserConfigManage.getInstance().getHomeId(), list, true, null); } } @@ -246,8 +345,8 @@ public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); - //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔紙鍘绘帀锛屽師鍥犳槸鎴戜笂浼犳垚鍔熷悗锛岀綉鍏冲啀娆″叏閲忎笂浼爋id鍒楄〃锛屼細鎶婁箣鍓峯id鍒楄〃瑕嗙洊鎺夛級 - uploadDataToCloud(homeId, list, null); + //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔� + uploadOidDataToCloud(homeId, list, true, null); } } @@ -1182,6 +1281,7 @@ gatewayBean.setPowerPvNow(cloudInverterDeviceBean.getPowerPvNow());//鍙戠數鍔熺巼 gatewayBean.setTotalElectricityPvToday(cloudInverterDeviceBean.getTotalElectricityPvToday());//浠婃棩鍙戠數閲� if (!TextUtils.isEmpty(cloudInverterDeviceBean.getOmodel())) { + //鍙兘璁惧娌℃湁涓婃姤缁欎簯绔�,寤鸿缁戝畾閫嗗彉鍣ㄦ椂鍊欒拷鍔犱竴涓弬鏁�; gatewayBean.setDevice_model(cloudInverterDeviceBean.getOmodel());//璁惧鍨嬪彿 } gatewayBean.setSpk(cloudInverterDeviceBean.getSpk());//璁惧spk -- Gitblit v1.8.0