From a0e8f81afc4fe2a21a5c504d53e569ea50d463d6 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期五, 15 三月 2024 11:51:23 +0800 Subject: [PATCH] 2024年03月15日11:51:17 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 159 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 60 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..98eeaef 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,9 +63,11 @@ import java.io.File; +import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; @@ -110,8 +116,9 @@ return; } String type = getKeyValue("type", data);//灏忕被 + String logTag = getKeyValue("logTag", data);//鏍囪uni鎸囦护 String mode_type = "澶х被->" + topic + "--->" + "灏忕被->" + type;//鐢ㄦ潵鎵撳嵃鐨� - HdlLogLogic.print("uni--->鍙戦��--->" + mode_type + "\r\n" + data, true); + HdlLogLogic.print(logTag + ":" + "uni--->鍙戦��--->" + mode_type + "\r\n" + data, true); if (HDLUniMP.UNI_EVENT_REPLY_USER_MODEL.equals(topic)) { //鐢ㄦ埛妯″潡 switch (type) { @@ -119,6 +126,7 @@ case HDLUniMP.UNI_EVENT_REPLY_USER_INFO: { this.uniGetUserInfo(mode_type, data, callback); } + break; //鐢ㄦ埛澶村儚锛堟棫骞冲彴閫昏緫鏄ご鍍忓崟鐙幏鍙栦笅杞藉湴鍧�锛� case HDLUniMP.UNI_EVENT_REPLY_USER_IMAGE: { uniGetImageKey(mode_type, data, callback); @@ -225,6 +233,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; @@ -1123,7 +1136,7 @@ @Override public void onFailure(HDLException e) { - uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + uniCallbackData(type, cUserInfo, callback); } }); } @@ -1181,6 +1194,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 +1222,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 +1357,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 +1451,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 +1483,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); @@ -1507,14 +1546,14 @@ @Override public void onSuccess(int[] data) { uniCallbackData(type, data, callback); -// HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + Arrays.toString(data), true); + HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + Arrays.toString(data), true); } @Override public void onError(HDLLinkException e) { uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); - //HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true); + HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true); } }); } -- Gitblit v1.8.0