From 17484333e6621a0285b61d50ceedc8698861120b Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期一, 11 三月 2024 20:54:41 +0800
Subject: [PATCH] 2024年03月11日20:54:25
---
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 211 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 173 insertions(+), 38 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 6720846..90b32bf 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -18,6 +18,7 @@
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
+import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
@@ -35,10 +36,16 @@
import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.listener.LinkCallBack;
+import com.hdl.photovoltaic.ui.StartActivity;
import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
import com.hdl.photovoltaic.ui.bean.DeviceTimeBean;
import com.hdl.photovoltaic.ui.bean.Geolocation;
import com.hdl.photovoltaic.ui.bean.OidBean;
+import com.hdl.photovoltaic.ui.me.AsRegardsActivity;
+import com.hdl.photovoltaic.ui.me.PersonalDataActivity;
+import com.hdl.photovoltaic.ui.me.SetActivity;
+import com.hdl.photovoltaic.ui.newC.MessageCenterList;
+import com.hdl.photovoltaic.ui.newC.PowerStationsListEdit;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.NetworkUtils;
@@ -58,10 +65,13 @@
import java.io.File;
+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;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
import okhttp3.ResponseBody;
@@ -107,7 +117,8 @@
return;
}
String type = getKeyValue("type", data);//灏忕被
- String mode_type = "澶х被->" + topic + "--->灏忕被->" + type;//鐢ㄦ潵鎵撳嵃鐨�
+ String mode_type = "澶х被->" + topic + "--->" + "灏忕被->" + type;//鐢ㄦ潵鎵撳嵃鐨�
+ HdlLogLogic.print("uni--->鍙戦��--->" + mode_type + "\r\n" + data, true);
if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) {
//浣忓畢妯″潡
switch (type) {
@@ -157,6 +168,11 @@
case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
this.uniAddInverterDeviceToCloud(mode_type, data, callback);
}
+ //娣诲姞澶氫釜閫嗗彉鍣ㄥ埌浜戠
+ case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD_All: {
+ this.uniAddAllInverterDeviceToCloud(mode_type, data, callback);
+ }
+
break;
//鍒犻櫎浜戠閫嗗彉鍣�
case HDLUniMP.UNI_EVENT_REPLY_DEVICE_DEL: {
@@ -313,7 +329,6 @@
}
} else if (HDLUniMP.UNI_EVENT_REPLY_OTHER_MODEL.equals(topic)) {
-
//鍏跺畠妯″潡
switch (type) {
//鑾峰彇娓╁害鍗曚綅
@@ -336,8 +351,54 @@
HdlLogLogic.print("uni--->log--->" + customizeContentFormat, true);
}
}
+ } else if (HDLUniMP.UNI_EVENT_REPLY_MINE_MODEL.equals(topic)) {
+ //鎴戠殑妯″潡
+ switch (type) {
+ //璧勬枡缂栬緫
+ case HDLUniMP.UNI_EVENT_REPLY_MINE_EDIT_USER_INFO: {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setClass(HDLApp.getInstance(), PersonalDataActivity.class);
+ HDLApp.getInstance().startActivity(intent);
+ }
+ break;
+ //鐢电珯閫夋嫨
+ case HDLUniMP.UNI_EVENT_REPLY_MINE_SELECTED_POWERSTATION: {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setClass(HDLApp.getInstance(), PowerStationsListEdit.class);
+ HDLApp.getInstance().startActivity(intent);
+ }
+ break;
+ //娑堟伅涓績
+ case HDLUniMP.UNI_EVENT_REPLY_MINE_MESSAGE_CENTER: {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setClass(HDLApp.getInstance(), MessageCenterList.class);
+ HDLApp.getInstance().startActivity(intent);
+ }
+ break;
+ //鍏充簬
+ case HDLUniMP.UNI_EVENT_REPLY_MINE_ABOUT: {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setClass(HDLApp.getInstance(), AsRegardsActivity.class);
+ HDLApp.getInstance().startActivity(intent);
+ }
+ break;
+ //璁剧疆
+ case HDLUniMP.UNI_EVENT_REPLY_MINE_SETTING: {
+ Intent intent = new Intent();
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.setClass(HDLApp.getInstance(), SetActivity.class);
+ HDLApp.getInstance().startActivity(intent);
+ }
+ break;
+
+
+ }
}
- HdlLogLogic.print("uni--->鍙戦��--->" + mode_type + "\r\n" + data, true);
+
} catch (Exception e) {
HdlLogLogic.print("uni--->鍙戦��--->" + e.getMessage(), true);
}
@@ -386,42 +447,49 @@
* 鑾峰彇浣嶇疆淇℃伅,鍖呮嫭缁忕含搴�
*/
private void uniGetLocationInfo(String type, Object data, DCUniMPJSCallback callback) {
-
-
- // 鍒濆鍖朙ocationManager瀵硅薄
- LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE);
- Geolocation geolocation = new Geolocation();
- //INTERNET 鍏佽浣跨敤缃戠粶
- //ACCESS_FINE_LOCATION 鍏佽浣跨敤GPS瀹氫綅
- //ACCESS_COARSE_LOCATION 鍏佽浣跨敤WIFI鐑偣鎴栧熀绔欐潵鑾峰彇绮楃暐鐨勫畾浣�
- if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- geolocation.setResult(-2);
- geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_no_location_information_permission));
+ try {
+ // 鍒濆鍖朙ocationManager瀵硅薄
+ LocationManager locationManager = (LocationManager) HDLApp.getInstance().getSystemService(Context.LOCATION_SERVICE);
+ Geolocation geolocation = new Geolocation();
+ //INTERNET 鍏佽浣跨敤缃戠粶
+ //ACCESS_FINE_LOCATION 鍏佽浣跨敤GPS瀹氫綅
+ //ACCESS_COARSE_LOCATION 鍏佽浣跨敤WIFI鐑偣鎴栧熀绔欐潵鑾峰彇绮楃暐鐨勫畾浣�
+ if (ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(HDLApp.getInstance(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ geolocation.setResult(-2);
+ geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_no_location_information_permission));
+ uniCallbackData(type, geolocation, callback);
+ return;
+ }
+ // 鍒ゆ柇璁惧鏄惁鏀寔瀹氫綅鍔熻兘
+ if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+ geolocation.setResult(-1);
+ geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
+ //todo 鎻愮ず鐢ㄦ埛鎵撳紑瀹氫綅鍔熻兘鎴栬�呭紩瀵肩敤鎴峰幓绯荤粺璁剧疆椤甸潰鎵撳紑瀹氫綅鍔熻兘
+ uniCallbackData(type, geolocation, callback);
+ return;
+ }
+ Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (location == null) {
+ geolocation.setResult(-3);
+ geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_unable_location_move10_meters_later));
+ uniCallbackData(type, geolocation, callback);
+ return;
+ }
+ geolocation.setResult(0);
+ geolocation.setDes(HDLApp.getInstance().getString(R.string.succeed));
+ BigDecimal latitude = BigDecimal.valueOf(location.getLatitude());//缁忓害
+ BigDecimal longitude = BigDecimal.valueOf(location.getLongitude());//绾害
+ double lat = latitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue();
+ double lon = longitude.setScale(6, RoundingMode.HALF_DOWN).doubleValue();
+ geolocation.setLatitude(lat);//缁忓害
+ geolocation.setLongitude(lon);//绾害
uniCallbackData(type, geolocation, callback);
- return;
- }
- // 鍒ゆ柇璁惧鏄惁鏀寔瀹氫綅鍔熻兘
- if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- geolocation.setResult(-1);
- geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
- //todo 鎻愮ず鐢ㄦ埛鎵撳紑瀹氫綅鍔熻兘鎴栬�呭紩瀵肩敤鎴峰幓绯荤粺璁剧疆椤甸潰鎵撳紑瀹氫綅鍔熻兘
+ } catch (Exception e) {
+ Geolocation geolocation = new Geolocation();
+ geolocation.setResult(-4);
+ geolocation.setDes(e.getMessage());
uniCallbackData(type, geolocation, callback);
- return;
}
- Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
- if (location == null) {
- geolocation.setResult(-3);
- geolocation.setDes(HDLApp.getInstance().getString(R.string.exception_the_location_function_is_not_enabled));
- uniCallbackData(type, geolocation, callback);
- return;
- }
- geolocation.setResult(0);
- geolocation.setDes(HDLApp.getInstance().getString(R.string.succeed));
- geolocation.setLongitude(location.getLatitude());//绾害
- geolocation.setLatitude(location.getLongitude());//缁忓害
- uniCallbackData(type, geolocation, callback);
- HdlLogLogic.print("缁忕含搴�--->缁忓害:" + location.getLongitude() + "绾害:" + location.getLatitude(), true);
-
}
/**
@@ -1121,6 +1189,7 @@
}
+
/**
* 閫嗗彉鍣ㄦ坊鍔犲埌浜戠涓�
*
@@ -1167,6 +1236,73 @@
uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
}
});
+ }
+
+ /**
+ * 澶氫釜閫嗗彉鍣ㄦ坊鍔犲埌浜戠涓�
+ *
+ * @param data uni鏁版嵁
+ * @param callback uni鍥炶皟
+ */
+ 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);
+
+ return;
+ }
+ List<GatewayBean> list = new ArrayList<>();
+ //璁板綍鏉℃暟
+ AtomicInteger atomicInteger = new AtomicInteger(0);
+ final boolean[] is_boolean = {false};
+ for (int i = 0; i < list.size(); i++) {
+
+ 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;
+ }
+ });
+ if (is_boolean[0]) {
+ //鍙湁涓棿鏈変竴鏉℃寚浠よ缃け璐�,榛樿鍏ㄩ儴澶辫触;
+ break;
+ }
+ }
}
/**
@@ -1362,10 +1498,9 @@
callback.invoke(getJSONObject(uniCallBackBaseBean));
// callback.invoke(uniCallBackBaseBean);
HdlLogLogic.print("uni--->鎺ユ敹--->" + type + "--->" + new Gson().toJson(uniCallBackBaseBean), true);
-
}
} catch (Exception e) {
- HdlLogLogic.print("uni--->鎺ユ敹--->" + type + "--->" + e.getMessage(), false);
+ HdlLogLogic.print("uni--->鎺ユ敹--->" + type + "--->" + e.getMessage(), true);
}
--
Gitblit v1.8.0