package com.hdl.photovoltaic.other; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.text.TextUtils; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.internet.api.HttpApi; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.ContactBean; import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.ui.bean.StatusOverviewBean; import com.hdl.sdk.link.core.config.HDLLinkConfig; import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * 住宅逻辑 */ public class HdlResidenceLogic { public static final int pageSize = 50; private static volatile HdlResidenceLogic sHdlResidenceLogic; /** * 获取当前对象 * * @return HdlResidenceLogic */ public static synchronized HdlResidenceLogic getInstance() { if (sHdlResidenceLogic == null) { synchronized (HdlResidenceLogic.class) { if (sHdlResidenceLogic == null) { sHdlResidenceLogic = new HdlResidenceLogic(); } } } return sHdlResidenceLogic; } /** * 获取缓存住宅列表 * * @return 住宅列表 */ public List getHouseInfoList() { return houseInfoList; } public void setHouseInfoList(List houseInfoList) { if (houseInfoList == null) { houseInfoList = new ArrayList<>(); } this.houseInfoList = houseInfoList; } public void clearHouseList() { if (mHouseIdList != null && mHouseIdList.size() > 0) { mHouseIdList.clear(); } if (houseInfoList != null && houseInfoList.size() > 0) { houseInfoList.clear(); } } /** * 获取缓存住宅ID列表 * * @return 住宅ID列表 */ public List getHouseIdList() { return mHouseIdList; } public void setHouseIdList(List list) { if (list == null || list.size() == 0) { return; } if (this.mHouseIdList.size() == 0) { this.mHouseIdList.addAll(list); return; } for (int i = 0; i < list.size(); i++) { this.setSingleHouseId(list.get(i)); } } /** * 添加电站Id到列表里面 * * @param houseIdBean -电站Id对象 */ public void setSingleHouseId(HouseIdBean houseIdBean) { try { if (houseIdBean == null) { return; } boolean if_boolean = false; for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseIdBean.getHomeId())) { //存在替换 mHouseIdList.remove(i); mHouseIdList.add(i, houseIdBean); if_boolean = true; break; } } if (!if_boolean) { //没有添加 this.mHouseIdList.add(houseIdBean); } } catch (Exception e) { String mes = e.getMessage(); HdlLogLogic.print("--->" + mes); } } /** * 删除电站 * * @param houseId 电站id */ public void delHouseId(String houseId) { if (TextUtils.isEmpty(houseId)) { return; } for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseId)) { mHouseIdList.remove(i); break; } } } /** * 移动电站位置 * * @param houseId 电站id */ public void moveHouseId(String houseId) { if (TextUtils.isEmpty(houseId)) { return; } int index = -1; for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(houseId)) { index = i; break; } } if (index == -1) { return; } //index==0表示只有一个元素或者在首位,不需要移动位置 if (index > 0) { Collections.swap(mHouseIdList, index - 1, index); } } //住宅ID列表 private List mHouseIdList = new ArrayList<>(); //住宅详情列表 private List houseInfoList = new ArrayList<>(); /** * 获取住宅列表,包括获取住宅id列表,住宅详情列表; * * @param cloudCallBeak - */ public void getHouseList(CloudCallBeak cloudCallBeak) { //获取住宅ID列表 getResidenceIdList("", "", new CloudCallBeak>() { @Override public void onSuccess(List houseListBeanIDList) { if (houseListBeanIDList != null && houseListBeanIDList.size() > 0) { mHouseIdList.clear(); mHouseIdList.addAll(houseListBeanIDList); //记录请求条数 AtomicInteger atomicInteger = new AtomicInteger(0); for (int i = 0; i < mHouseIdList.size(); i++) { HouseIdBean houseIdBean = mHouseIdList.get(i); //获取住宅详情列表 getResidenceInfo(houseIdBean.getHomeId(), new CloudCallBeak() { @Override public void onSuccess(HouseInfoBean houseInfoBean) { atomicInteger.set(atomicInteger.get() + 1); if (houseInfoBean != null) { houseInfoBean.setPowerStationImage(houseIdBean.getPowerStationImage());//电站图片 houseInfoBean.setInstalledCapacity(houseIdBean.getInstalledCapacity());//装机容量 houseInfoBean.setPower(houseIdBean.getPower());//发电功率 houseInfoBean.setTodayElectricity(houseIdBean.getTodayElectricity());//今天发电量 houseInfoBean.setPowerStationStatus(houseIdBean.getPowerStationStatus());//电站状态(电站状态 1:正常(运行),2:离线,3:连接中,4:故障) //添加到本地缓存 addHouseToLocalMemory(houseInfoBean); } if (atomicInteger.get() == mHouseIdList.size()) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } } @Override public void onFailure(HDLException e) { atomicInteger.set(atomicInteger.get() + 1); if (atomicInteger.get() == mHouseIdList.size()) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } } }); } } else { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 获取住宅(电站)ID列表 * * @param key 发电功率排序(powerSort); * 今日发电量排序(todayElectricitySort); * 创建时间排序(createTimeSort); * @param keyValue (descending:降序 * ascending:升序), */ public void getResidenceIdList(String key, String keyValue, CloudCallBeak> cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_List; JsonObject json = new JsonObject(); if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(keyValue)) { json.addProperty(key, keyValue);//发电功率排序(descending:降序ascending:升序) } // json.addProperty("zoneType", "password");//区域 json.addProperty("pageNo", 1);//页码 json.addProperty("pageSize", pageSize);//页数 List list = new ArrayList<>(); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(list); } } Gson gson = new Gson(); HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class); list.addAll(houseInfoBeanClass.getList()); //总共有多少页 long totalPage = houseInfoBeanClass.totalPage; if (totalPage < 2) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(list); } return; } //记录请求条数 AtomicInteger atomicInteger = new AtomicInteger(0); //从第二页获取数据 for (int i = 2; i <= totalPage; i++) { json.addProperty("pageNo", i);//更新页码 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { atomicInteger.set(atomicInteger.get() + 1); Gson gson = new Gson(); HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class); list.addAll(houseInfoBeanClass.getList()); if (atomicInteger.get() == totalPage - 1) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onSuccess(list); } } } @Override public void onFailure(HDLException e) { atomicInteger.set(atomicInteger.get() + 1); if (atomicInteger.get() == totalPage - 1) { //最后一条退出 if (cloudCallBeak != null) { cloudCallBeak.onSuccess(list); } } } }); } } @Override public void onFailure(HDLException exception) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(exception); } } }); } /** * 获取住宅(电站)ID列表 * * @param key 发电功率排序(powerSort); * 今日发电量排序(todayElectricitySort); * 创建时间排序(createTimeSort); * @param keyValue (descending:降序 * ascending:升序), * @param installedCapacityMin 最小组串容量(装机容量) * @param installedCapacityMax 最大组串容量(装机容量) * @param gridType 并网状态 (全部 :"";FULL_GRID : 并网;OFFLINE :离网) * @param powerStationStatus 电站状态 (全部 :"";1 : 正常;2 : 离线; 3 : 待接入;4 : 故障) * @param pageNo 页码 * @param pageSize 页数(一页多少数据) */ public void getResidenceIdList( String key, String keyValue, String installedCapacityMin, String installedCapacityMax, String gridType, String powerStationStatus, long pageNo, long pageSize, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_List; JsonObject json = new JsonObject(); if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(keyValue)) { json.addProperty(key, keyValue);//发电功率排序(descending:降序ascending:升序) } if (!TextUtils.isEmpty(installedCapacityMin)) { try { int value = Integer.parseInt(installedCapacityMin);//可能有异常,用户输入值超时int最大致导致的 json.addProperty("installedCapacityMin", value); } catch (Exception ignored) { } } if (!TextUtils.isEmpty(installedCapacityMax)) { try { int value = Integer.parseInt(installedCapacityMax);//可能有异常,用户输入值超时int最大致导致的 json.addProperty("installedCapacityMax", value); } catch (Exception ignored) { } } if (!TextUtils.isEmpty(gridType)) { try { json.addProperty("gridType", gridType); } catch (Exception ignored) { } } if (!TextUtils.isEmpty(powerStationStatus)) { try { int value = Integer.parseInt(powerStationStatus); json.addProperty("powerStationStatus", value); } catch (Exception ignored) { } } // json.addProperty("zoneType", "password");//区域 json.addProperty("pageNo", pageNo);//页码 json.addProperty("pageSize", pageSize);//页数 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(new HouseBeanClass()); } return; } Gson gson = new Gson(); HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(houseInfoBeanClass); } } @Override public void onFailure(HDLException exception) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(exception); } } }); } /** * 获取住宅(电站)ID详情 * * @param homeId 住宅id * @param cloudCallBeak 回调 */ public void getResidenceInfo(String homeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_Info; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId);//电站id //json.addProperty("zoneType", "password");//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(null); } } Gson gson = new Gson(); HouseInfoBean houseInfoBean = gson.fromJson(jsonStr, HouseInfoBean.class); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(houseInfoBean); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 编辑住宅(电站), * * @param houseInfoBean - * @param cloudCallBeak - */ public void editResidence(HouseInfoBean houseInfoBean, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_Edit; JsonObject json = new JsonObject(); JsonObject location = new JsonObject(); json.addProperty("homeId", houseInfoBean.getHomeId()); location.addProperty("nationCode", houseInfoBean.getLocation().getNationCode()); location.addProperty("nationName", houseInfoBean.getLocation().getNationName()); location.addProperty("provinceCode", houseInfoBean.getLocation().getProvinceCode()); location.addProperty("provinceName", houseInfoBean.getLocation().getProvinceName()); location.addProperty("cityCode", houseInfoBean.getLocation().getCityCode()); location.addProperty("cityName", houseInfoBean.getLocation().getCityName()); json.add("location", location); json.addProperty("address", houseInfoBean.getAddress()); json.addProperty("latitude", houseInfoBean.getLatitude()); json.addProperty("longitude", houseInfoBean.getLongitude()); json.addProperty("homeName", houseInfoBean.getHomeName()); json.addProperty("timezone", houseInfoBean.getTimezone()); json.addProperty("powerStationType", houseInfoBean.getPowerStationType()); json.addProperty("workMode", houseInfoBean.getWorkMode()); json.addProperty("installedCapacity", houseInfoBean.getInstalledCapacity()); json.addProperty("productionTime", houseInfoBean.getProductionTime()); json.addProperty("monetaryUnit", houseInfoBean.getMonetaryUnit()); json.addProperty("electrovalence", houseInfoBean.getElectrovalence()); json.addProperty("totalCost", houseInfoBean.getTotalCost()); json.addProperty("zoneType", houseInfoBean.getZoneType()); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 住宅(电站)移动位置 * * @param homeId 电站id * @param frontHomeId 前面的电站id,如果不传表示排到第一位 * @param cloudCallBeak - */ public void moveResidence(String homeId, String frontHomeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_UserSort; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); if (!TextUtils.isEmpty(frontHomeId)) { json.addProperty("frontHomeId", frontHomeId); } // json.addProperty("zoneType", "zoneType"); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 删除住宅(电站) * * @param homeId - * @param cloudCallBeak - */ public void delResidence(String homeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_Remove; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId);//电站id //json.addProperty("zoneType", "password");//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 电站状态概览(安装商) */ public void getStatusOverview(CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_statusOverview; JsonObject json = new JsonObject(); // json.addProperty("zoneType", zoneType);//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(new StatusOverviewBean()); } } Gson gson = new Gson(); StatusOverviewBean statusOverviewBean = gson.fromJson(jsonStr, StatusOverviewBean.class); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(statusOverviewBean); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 添加住宅(电站)到云端 * * @param houseInfoBean - * @param cloudCallBeak - */ public void addHouseToCloud(HouseInfoBean houseInfoBean, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_PowerStation_Create; JsonObject json = new JsonObject(); JsonObject location = new JsonObject(); json.addProperty("powerStationImage", ""); location.addProperty("nationCode", houseInfoBean.getLocation().getNationCode()); location.addProperty("nationName", houseInfoBean.getLocation().getNationName()); location.addProperty("provinceCode", houseInfoBean.getLocation().getProvinceCode()); location.addProperty("provinceName", houseInfoBean.getLocation().getProvinceName()); location.addProperty("cityCode", houseInfoBean.getLocation().getCityCode()); location.addProperty("cityName", houseInfoBean.getLocation().getCityName()); json.add("location", location); json.addProperty("address", houseInfoBean.getAddress()); json.addProperty("latitude", houseInfoBean.getLatitude()); json.addProperty("longitude", houseInfoBean.getLongitude()); json.addProperty("homeName", houseInfoBean.getHomeName()); json.addProperty("timezone", houseInfoBean.getTimezone()); json.addProperty("powerStationType", houseInfoBean.getPowerStationType()); json.addProperty("workMode", houseInfoBean.getWorkMode()); json.addProperty("installedCapacity", houseInfoBean.getInstalledCapacity()); json.addProperty("productionTime", houseInfoBean.getProductionTime()); json.addProperty("monetaryUnit", houseInfoBean.getMonetaryUnit()); json.addProperty("electrovalence", houseInfoBean.getElectrovalence()); json.addProperty("totalCost", houseInfoBean.getTotalCost()); json.addProperty("zoneType", houseInfoBean.getZoneType()); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 获取住宅图片 */ public void getResidenceImage(String imageUrl, CloudCallBeak cloudCallBeak) { String requestUrl = imageUrl; JsonObject json = new JsonObject(); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(null); } return; } Bitmap bitmap = BitmapFactory.decodeByteArray(jsonStr.getBytes(), 0, jsonStr.getBytes().length); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(bitmap); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 用户自定义配置温度单位 * * @param tempType 温度单位类型 (C :摄氏度, F :华氏度) * @param cloudCallBeak - */ public void setResidenceTemperatureUnit(String tempType, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_C_F_CustomConfig; JsonObject json = new JsonObject(); json.addProperty("tempType", tempType); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 联系我们 * * @param cloudCallBeak - */ public void getResidenceUtilContact(CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.B_POST_GET_UTIL_CONTACT; JsonObject json = new JsonObject(); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (TextUtils.isEmpty(jsonStr)) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(new ContactBean()); return; } } ContactBean contactBean = new Gson().fromJson(jsonStr, ContactBean.class); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(contactBean); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 获取用户自定义配置温度单位详情 * * @param cloudCallBeak - */ public void getResidenceTemperatureUnit(CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_C_F_CustomConfigInfo; JsonObject json = new JsonObject(); // json.addProperty("homeId", homeId); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 添加【住宅详情】到本地缓存 * * @param houseInfoBean 住宅详情 */ public void addHouseToLocalMemory(HouseInfoBean houseInfoBean) { if (houseInfoBean == null) { return; } int index = isExistHouse(houseInfoBean.getHomeId()); if (index > -1) { houseInfoList.remove(index); houseInfoList.add(index, houseInfoBean); } else { houseInfoList.add(houseInfoBean); } } /** * 查询本地缓存住宅列表是否存在住宅 * * @param homeId 住宅id * @return 列表索引 */ public int isExistHouse(String homeId) { int index = -1; for (int i = 0; i < houseInfoList.size(); i++) { if (houseInfoList.get(i).getHomeId().equals(homeId)) { index = i; break; } } return index; } /** * 获取住宅详情 * * @param homeId 住宅id * @return 住宅找不到返回null */ public HouseInfoBean getHouse(String homeId) { int position = isExistHouse(homeId); if (position > -1) { return houseInfoList.get(position); } return null; } /** * 删除住宅 * * @param homeId 住宅id */ public void delHouse(String homeId) { int position = isExistHouse(homeId); if (position > -1) { houseInfoList.remove(position); } } /** * 获取住宅Id对象 * * @param homeId 住宅id * @return 列表索引 */ public HouseIdBean getHouseId(String homeId) { for (int i = 0; i < mHouseIdList.size(); i++) { if (mHouseIdList.get(i).getHomeId().equals(homeId)) { return mHouseIdList.get(i); } } return null; } /** * 切换住宅 * * @param houseIdBean 住宅Id对象 * @param checkStationId 表示是否启动检验电站Id的逻辑(true表示检测,否则不检验) */ public void switchHouse(HouseIdBean houseIdBean, boolean checkStationId) { String homeId = UserConfigManage.getInstance().getHomeId(); if (checkStationId) { if (houseIdBean.getHomeId().equals(homeId)) { HdlLogLogic.print("点击同一个住宅--->" + homeId); return; } } //订阅要全部取消 if (MqttRecvClient.getInstance() != null) { MqttRecvClient.getInstance().removeAllTopic(); } //要清空之前tcp连接缓存 //TODO: 10/10/23 //删除旧的住宅文件夹 2023年11月03日14:28:19暂时去掉 // HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentHomeRootPath()); //重新设置住宅id UserConfigManage.getInstance().setHomeId(houseIdBean.getHomeId()); UserConfigManage.getInstance().setHomeName(houseIdBean.getHomeName()); //重新设置本地通讯秘钥 UserConfigManage.getInstance().setLocalSecret(houseIdBean.getLocalSecret()); UserConfigManage.getInstance().Save(); //配置本地通信的信息 HDLLinkConfig.getInstance().setHomeId(UserConfigManage.getInstance().getHomeId()); HDLLinkConfig.getInstance().setLocalSecret(UserConfigManage.getInstance().getLocalSecret()); //重新创建住宅文件夹 HdlFileLogic.getInstance().createDirectory(); //进去住宅详情搜索一下逆变器列表,目的是建立通讯通道; HdlDeviceLogic.getInstance().searchCurrentHomeGateway(houseIdBean.getHomeId(), null); } /** * 电站数据(统计) * * @param homeId 住宅id */ public void getResidenceInverterAllInfo(String homeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_inverter_allInfo; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { // cloudCallBeak.onSuccess(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 电站授权安装商(C端) * 描述:交付后的住宅,C端用户可以开启授权后安装商可以继续调试电站 * * @param homeId 电站id * @param debugPerm 授权状态(true可以继续调试) * @param cloudCallBeak - */ public void homeUpdateDebugPerm(String homeId, boolean debugPerm, CloudCallBeak< Boolean> cloudCallBeak) { String requestUrl = HttpApi.C_POST_HOME_UPDATEDEBUGPERM; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); json.addProperty("debugPerm", debugPerm); // json.addProperty("zoneType", memberBean.getId());//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 获取电站交付二维码(B端) * 描述:安装商电站的交付二维码 * * @param homeId 电站id * @param cloudCallBeak - */ public void getDeliveryUrlQrcode(String homeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_getDeliveryUrlQrcode; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); // json.addProperty("zoneType", memberBean.getId());//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 获取电站交付URl(B端) * 描述:安装商电站的交付URl * * @param homeId 电站id * @param cloudCallBeak - */ public void getDeliveryUrl(String homeId, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_getDeliveryUrl; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); // json.addProperty("zoneType", memberBean.getId());//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 电站手动交付(B端) * 描述:安装商手动交付电站给指定的C端账号 * * @param homeId 电站id * @param account C端账号 * @param cloudCallBeak - */ public void getDeliverToAccount(String homeId, String account, CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_deliverToAccount; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); json.addProperty("account", account);//C端账号 // json.addProperty("zoneType", memberBean.getId());//区域 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 添加推送Token * * @param cloudCallBeak - */ public void pushAdd(CloudCallBeak cloudCallBeak) { String requestUrl = HttpApi.POST_push_add; JsonObject json = new JsonObject(); json.addProperty("deviceName", Build.MODEL);//设备名称 json.addProperty("deviceType", "Android");//设备类型 json.addProperty("produce", AppConfigManage.isIsOnlineServer());//表示是否是正式服务器 json.addProperty("pushToken", UserConfigManage.getInstance().getRegistrationID());//App的推送Token,在极光为RegId json.addProperty("software", "PHOTOVOLTAIC");//软件来源 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak() { @Override public void onSuccess(String jsonStr) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } public static class HouseBeanClass { //总条数 private long totalCount; //总页数 private long totalPage; //当前页 private long pageNo; //页数 private long pageSize; //电站列表 private List list; public long getTotalCount() { return totalCount; } public void setTotalCount(long totalCount) { this.totalCount = totalCount; } public long getTotalPage() { return totalPage; } public void setTotalPage(long totalPage) { this.totalPage = totalPage; } public long getPageNo() { return pageNo; } public void setPageNo(long pageNo) { this.pageNo = pageNo; } public long getPageSize() { return pageSize; } public void setPageSize(long pageSize) { this.pageSize = pageSize; } public List getList() { return list == null ? new ArrayList<>() : list; } public void setList(List list) { this.list = list; } } }