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.bean.HttpResponsePack;
|
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.BaseSuccessFailureCallBeak;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
|
import com.hdl.photovoltaic.ui.bean.ContactBean;
|
import com.hdl.photovoltaic.ui.bean.DeviceBean;
|
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
|
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
|
import com.hdl.photovoltaic.ui.bean.MessageBean;
|
import com.hdl.sdk.link.common.exception.HDLLinkException;
|
import com.hdl.sdk.link.core.bean.gateway.GatewayBean;
|
import com.hdl.sdk.link.core.callback.GatewayCallBack;
|
import com.hdl.sdk.link.core.config.HDLLinkConfig;
|
import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
|
import com.hdl.sdk.link.gateway.HDLLinkLocalGateway;
|
|
import java.nio.charset.StandardCharsets;
|
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<HouseInfoBean> getHouseInfoList() {
|
return houseInfoList;
|
}
|
|
public void setHouseInfoList(List<HouseInfoBean> houseInfoList) {
|
if (houseInfoList == null) {
|
houseInfoList = new ArrayList<>();
|
}
|
this.houseInfoList = houseInfoList;
|
}
|
|
public void clearHouseList() {
|
if (houseInfoList == null) {
|
return;
|
}
|
if (houseInfoList.size() > 0) {
|
houseInfoList.clear();
|
}
|
}
|
|
|
/**
|
* 获取缓存住宅ID列表
|
*
|
* @return 住宅ID列表
|
*/
|
public List<HouseIdBean> getHouseIdList() {
|
return mHouseIdList;
|
}
|
|
public void setHouseIdList(List<HouseIdBean> 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<HouseIdBean> mHouseIdList = new ArrayList<>();
|
//住宅详情列表
|
private List<HouseInfoBean> houseInfoList = new ArrayList<>();
|
|
|
/**
|
* 获取住宅列表,包括获取住宅id列表,住宅详情列表;
|
*
|
* @param cloudCallBeak -
|
*/
|
public void getHouseList(CloudCallBeak<Boolean> cloudCallBeak) {
|
//获取住宅ID列表
|
getResidenceIdList("", "", new CloudCallBeak<List<HouseIdBean>>() {
|
@Override
|
public void onSuccess(List<HouseIdBean> 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<HouseInfoBean>() {
|
@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<List<HouseIdBean>> 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<HouseIdBean> list = new ArrayList<>();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@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<String>() {
|
@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<HouseBeanClass> 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<String>() {
|
@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<HouseInfoBean> 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<String>() {
|
@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<Boolean> 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<String>() {
|
@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<Boolean> 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<String>() {
|
@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<Boolean> 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<String>() {
|
@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 houseInfoBean -
|
* @param cloudCallBeak -
|
*/
|
public void addHouseToCloud(HouseInfoBean houseInfoBean, CloudCallBeak<Boolean> 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<String>() {
|
@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<Bitmap> cloudCallBeak) {
|
String requestUrl = imageUrl;
|
JsonObject json = new JsonObject();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@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<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_C_F_CustomConfig;
|
JsonObject json = new JsonObject();
|
json.addProperty("tempType", tempType);
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@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<ContactBean> cloudCallBeak) {
|
String requestUrl = HttpApi.B_POST_GET_UTIL_CONTACT;
|
JsonObject json = new JsonObject();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@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<String> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_C_F_CustomConfigInfo;
|
JsonObject json = new JsonObject();
|
// json.addProperty("homeId", homeId);
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@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对象
|
*/
|
public void switchHouse(HouseIdBean houseIdBean) {
|
String homeId = UserConfigManage.getInstance().getHomeId();
|
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(null);
|
}
|
|
|
/**
|
* 电站数据(统计)
|
*
|
* @param homeId 住宅id
|
*/
|
public void getResidenceInverterAllInfo(String homeId, CloudCallBeak<Bitmap> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_inverter_allInfo;
|
JsonObject json = new JsonObject();
|
json.addProperty("homeId", homeId);
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
if (cloudCallBeak != null) {
|
// cloudCallBeak.onSuccess(jsonStr);
|
}
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 添加推送Token
|
*
|
* @param cloudCallBeak -
|
*/
|
public void pushAdd(CloudCallBeak<String> 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<String>() {
|
@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<HouseIdBean> 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<HouseIdBean> getList() {
|
return list == null ? new ArrayList<>() : list;
|
}
|
|
public void setList(List<HouseIdBean> list) {
|
this.list = list;
|
}
|
}
|
|
}
|