From 90374cac911932ac9cb9f832cf80476166e2e6df Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 14 三月 2024 16:59:08 +0800 Subject: [PATCH] 2024年03月14日16:58:55 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 148 ++++++++++++++++++++++++++++++------------------ 1 files changed, 92 insertions(+), 56 deletions(-) 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 75a6bed..9bda4c6 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -11,10 +11,14 @@ import android.location.LocationManager; import android.os.IBinder; import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; import androidx.core.app.ActivityCompat; +import com.alibaba.fastjson.JSON; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; @@ -59,6 +63,7 @@ import java.io.File; +import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; @@ -225,6 +230,11 @@ //閫嗗彉鍣ㄦ竻绌轰綇瀹卛d case HDLUniMP.UNI_EVENT_REPLY_DEVICE_CLEAR_DATA: { this.uniClearInverterHomeId(mode_type, data, callback); + } + break; + //鑾峰彇鏈鐞�/鏈娑堟伅鏁伴噺 + case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MESSAGE_NUMBER: { + this.uniGetMessageNumber(mode_type, data, callback); } break; @@ -1181,6 +1191,27 @@ } /** + * 鑾峰彇鏈鐞�/鏈娑堟伅鏁伴噺 + * + * @param data uni鏁版嵁 + * @param callback uni鍥炶皟 + */ + private void uniGetMessageNumber(String type, Object data, DCUniMPJSCallback callback) { + String homeId = getKeyValue("homeId", getKeyValue("data", data)); + HdlMessageLogic.getInstance().getMessageUntreatedCount(homeId, new CloudCallBeak<String>() { + @Override + public void onSuccess(String data) { + uniCallbackData(type, data, callback); + } + + @Override + public void onFailure(HDLException e) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + } + }); + } + + /** * 閫嗗彉鍣ㄣ�愪笂浼犳暟鎹�戝埌浜戠 * * @param data uni鏁版嵁 @@ -1188,7 +1219,11 @@ */ private void uniUploadDataToCloud(String type, Object data, DCUniMPJSCallback callback) { String mac = getKeyValue("mac", getKeyValue("data", data)); - HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), mac, null); + List<GatewayBean> list = new ArrayList<>(); + GatewayBean gatewayBean = new GatewayBean(); + gatewayBean.setDevice_mac(mac); + list.add(gatewayBean); + HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), list, null); } /** @@ -1319,62 +1354,66 @@ */ private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) { // com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data); - String mac = getKeyValue("mac", getKeyValue("data", data)); - String homeId = UserConfigManage.getInstance().getHomeId(); - GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac); - if (gatewayBean == null) { - uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback); + try { + String devices = getKeyValue("devices", getKeyValue("data", data)); + Gson gson = new Gson(); + Type typeOfT = new TypeToken<List<GatewayBean>>() { + }.getType(); + List<GatewayBean> list = gson.fromJson(devices, typeOfT); + if (list == null || list.size() == 0) { + uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback); + return; + } + String homeId = UserConfigManage.getInstance().getHomeId(); + //璁板綍鏉℃暟 + AtomicInteger atomicInteger = new AtomicInteger(0); + final boolean[] is_boolean = {false}; + for (int i = 0; i < list.size(); i++) { + GatewayBean gatewayBean = list.get(i); + HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + HdlDeviceLogic.getInstance().editGatewayParam(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + atomicInteger.set(atomicInteger.get() + 1); + //鏈�鍚庝竴鏉℃墠鍋氭坊鍔犻�嗗彉鍣ㄩ�昏緫澶勭悊 + if (atomicInteger.get() == list.size()) { + HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, list, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(type, null, callback); + } - return; - } - List<GatewayBean> list = new ArrayList<>(); - //璁板綍鏉℃暟 - AtomicInteger atomicInteger = new AtomicInteger(0); - final boolean[] is_boolean = {false}; - for (int i = 0; i < list.size(); i++) { + @Override + public void onFailure(HDLException e) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + } + }); + } - HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() { - @Override - public void onSuccess(Boolean obj) { - HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() { - @Override - public void onSuccess(Boolean obj) { - atomicInteger.set(atomicInteger.get() + 1); - //鏈�鍚庝竴鏉℃墠鍋氭坊鍔犻�嗗彉鍣ㄩ�昏緫澶勭悊 - if (atomicInteger.get() == list.size()) { - HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, mac, list, new CloudCallBeak<Boolean>() { - @Override - public void onSuccess(Boolean obj) { - uniCallbackData(type, null, callback); - } - - @Override - public void onFailure(HDLException e) { - uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); - } - }); } - } + @Override + public void onError(HDLLinkException e) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + is_boolean[0] = true; + } + }); + } - @Override - public void onError(HDLLinkException e) { - uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); - is_boolean[0] = true; - } - }); + @Override + public void onError(HDLLinkException e) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + is_boolean[0] = true; + } + }); + if (is_boolean[0]) { + //鍙湁涓棿鏈変竴鏉℃寚浠よ缃け璐�,榛樿鍏ㄩ儴澶辫触; + break; } - - @Override - public void onError(HDLLinkException e) { - uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); - is_boolean[0] = true; - } - }); - if (is_boolean[0]) { - //鍙湁涓棿鏈変竴鏉℃寚浠よ缃け璐�,榛樿鍏ㄩ儴澶辫触; - break; } + } catch (Exception ignored) { } } @@ -1409,7 +1448,7 @@ private void uniSearchGateway(String type, DCUniMPJSCallback callback) { - HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() { + HdlDeviceLogic.getInstance().searchAllNetworkGateway(new GatewayCallBack() { @Override public void onSuccess(List<GatewayBean> gatewayBeanList) { uniCallbackData(type, gatewayBeanList, callback); @@ -1441,11 +1480,8 @@ } return; } - GatewayBean gatewayBean = HdlDeviceLogic.getInstance().queryCurrentHomeMainGateway(list, homeId); - if (gatewayBean != null) { - //杩涙潵浣忓畢璇︽儏閮借涓婁紶涓�娆id鍒楄〃鍒颁簯绔�; - HdlDeviceLogic.getInstance().uploadDataToCloud(homeId, gatewayBean.getDevice_mac(), null); - } + //杩涙潵浣忓畢璇︽儏閮借涓婁紶涓�娆id鍒楄〃鍒颁簯绔�; + HdlDeviceLogic.getInstance().uploadDataToCloud(homeId, list, null); //EventBus浜嬩欢鍒嗗彂,杩涘叆浣忓畢寮�濮嬭闃呬富棰� BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST); -- Gitblit v1.8.0