From 4a2d7f9ac055d10ba7baf58df690e0ad62826f52 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期三, 13 三月 2024 17:34:51 +0800 Subject: [PATCH] 2024年03月13日17:23:53 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 227 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 178 insertions(+), 49 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..dc2df03 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -8,18 +8,13 @@ import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.location.Location; -import android.location.LocationListener; import android.location.LocationManager; import android.os.IBinder; -import android.provider.Settings; import android.text.TextUtils; -import android.util.Log; -import androidx.annotation.NonNull; import androidx.core.app.ActivityCompat; import com.google.gson.Gson; -import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; @@ -39,6 +34,11 @@ 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 +58,12 @@ 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 +109,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 +160,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 +321,6 @@ } } else if (HDLUniMP.UNI_EVENT_REPLY_OTHER_MODEL.equals(topic)) { - //鍏跺畠妯″潡 switch (type) { //鑾峰彇娓╁害鍗曚綅 @@ -336,8 +343,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 +439,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 +1181,7 @@ } + /** * 閫嗗彉鍣ㄦ坊鍔犲埌浜戠涓� * @@ -1167,6 +1228,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; + } + } } /** @@ -1275,7 +1403,8 @@ private void sendModBus(String type, Object data, DCUniMPJSCallback callback) { String tempData = getKeyValue("data", data); if (TextUtils.isEmpty(tempData)) { - HdlLogLogic.print("data鍐呭涓虹┖--->", false); + uniCallbackData(type, null, -2, "data鍐呭涓虹┖", callback); + //HdlLogLogic.print("data鍐呭涓虹┖--->", false); return; } ModBusBean modBusBean = new Gson().fromJson(tempData, ModBusBean.class); @@ -1286,24 +1415,25 @@ // modBusBean.setOid("0101050217BBC400"); // } if (modBusBean.getMac() == null || modBusBean.getData() == null) { - HdlLogLogic.print("uni--->鍙戦��--->ModBus--->鍙戦�佸け璐�,(mac鎴栬�卭id)涓虹┖." + Arrays.toString(modBusBean.getData()), true); + uniCallbackData(type, null, -2, "鍙戦�佸け璐�,(mac鎴栬�卭id)涓虹┖", callback); + //HdlLogLogic.print("uni--->鍙戦��--->ModBus--->鍙戦�佸け璐�,(mac鎴栬�卭id)涓虹┖." + Arrays.toString(modBusBean.getData()), true); return; } - HdlLogLogic.print("uni--->鍙戦��--->ModBus--->" + Arrays.toString(modBusBean.getData()), true); + //HdlLogLogic.print("uni--->鍙戦��--->ModBus--->" + Arrays.toString(modBusBean.getData()), true); //鍙戦�乵odbus鍗忚 HDLModBusConnect.getInstance().Send(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() { @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); } }); } @@ -1362,10 +1492,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