package com.hdl.linkpm.sdk.template;/*
|
*create by wxr
|
*date 2022/1/19
|
*/
|
|
import com.google.gson.JsonElement;
|
import com.google.gson.JsonObject;
|
import com.hdl.hdlhttp.HxHttp;
|
import com.hdl.linkpm.sdk.HDLLinkPMSdk;
|
import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.linkpm.sdk.core.interceptor.HDLSmartHeader;
|
import com.hdl.linkpm.sdk.core.response.HDLResponse;
|
import com.hdl.linkpm.sdk.template.bean.CloudTemplateDevice;
|
import com.hdl.linkpm.sdk.template.bean.CloudTemplateSpatialInfo;
|
import com.hdl.linkpm.sdk.template.bean.TemplateDeviceBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateFunctionBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateGatewayBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateListResponseBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateLogicBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateRoomPackBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateSceneBean;
|
import com.hdl.linkpm.sdk.template.bean.TemplateSecurityBean;
|
import com.hdl.linkpm.sdk.template.callback.ICreateTemplateCallBack;
|
import com.hdl.linkpm.sdk.template.callback.IGetTemplateDeviceListCallBack;
|
import com.hdl.linkpm.sdk.template.callback.IGetTemplateGatewayListCallBack;
|
import com.hdl.linkpm.sdk.template.callback.IGetTemplateSpatialInfoCallBack;
|
import com.hdl.linkpm.sdk.template.callback.ITemplateFunctionsCallBack;
|
import com.hdl.linkpm.sdk.template.callback.ITemplateListCallBack;
|
import com.hdl.linkpm.sdk.template.callback.ITemplateLogicCallBack;
|
import com.hdl.linkpm.sdk.template.callback.ITemplateScenesCallBack;
|
import com.hdl.linkpm.sdk.template.callback.ITemplateSecurityCallBack;
|
import com.hdl.linkpm.sdk.template.controller.HDLTemplateController;
|
import com.hdl.linkpm.sdk.utils.HDLFileUtils;
|
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.List;
|
|
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.functions.Consumer;
|
import okhttp3.ResponseBody;
|
|
public class HDLLinkPMTemplate {
|
|
/**
|
* instance
|
*/
|
private volatile static HDLLinkPMTemplate instance;
|
|
/**
|
* getInstance
|
*
|
* @return HDLPMTemplateController
|
*/
|
public static synchronized HDLLinkPMTemplate getInstance() {
|
if (instance == null) {
|
synchronized (HDLLinkPMTemplate.class) {
|
if (instance == null) {
|
instance = new HDLLinkPMTemplate();
|
}
|
}
|
}
|
return instance;
|
}
|
|
/**
|
* 创建模板
|
* @param templateName 模板名称
|
* @param communityCode 社区编码
|
* @param houseLayoutId 户型id (要调用户型列表的接口)
|
* @param templateDesc 模板描述
|
* @param callBack 回调
|
*/
|
public void CreateTemplate(String templateName,String communityCode,String houseLayoutId,String templateDesc,ICreateTemplateCallBack callBack) {
|
HDLTemplateController.getInstance().CreateTemplate(templateName, communityCode, houseLayoutId, templateDesc, new ICreateTemplateCallBack() {
|
@Override
|
public void onSuccess(String templateId) {
|
callBack.onSuccess(templateId);
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
callBack.onFailure(error);
|
}
|
});
|
}
|
|
/**
|
* 添加设备(全量)
|
* @param templateExtendsId
|
* @param beans
|
* @param callBack
|
*/
|
public void UpdateTemplateDevices(String templateExtendsId,List<TemplateDeviceBean> beans,IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdateTemplateDevices(templateExtendsId, beans, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 上传模板zb数据文件文件
|
*
|
* @param templateExtendsId 模板ID
|
* @param file 上传的文件
|
* @param callBack
|
* @return
|
*/
|
public Disposable TemplateZbFileUpload(String templateExtendsId, File file, IDefaultCallBack callBack) {
|
String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + "/iot-cloud/debug/backup/file/zigbeeDataUpload?templateExtendsId=" + templateExtendsId;
|
return HxHttp.builder()
|
.file(file, "file")
|
.url(requestUrl)
|
.build()
|
.upload()
|
.subscribeWith(new HDLResponse<String>() {
|
@Override
|
public void onResponse(String code) {
|
// FileUtils.deleteFile(file);//不用删掉本地文件 2022-09-28 17:24:06
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HDLFileUtils.deleteFile(file);
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 下载模板zb数据文件文件
|
*/
|
public static boolean saveTempalteZbFile(ResponseBody zipData,File file) {
|
// 如果存在就先删除数据,数据会追加
|
if(file.exists()){
|
file.delete();
|
file.deleteOnExit();
|
}
|
InputStream is = null;
|
byte[] buf = new byte[4096];
|
int len = 0;
|
FileOutputStream fos = null;
|
try {
|
is = zipData.byteStream();
|
long total = zipData.contentLength();
|
fos = new FileOutputStream(file);
|
long sum = 0;
|
while ((len = is.read(buf)) != -1) {
|
fos.write(buf, 0, len);
|
sum += len;
|
}
|
fos.flush();
|
return true;
|
} catch (Exception e) {
|
e.printStackTrace();
|
return false;
|
} finally {
|
try {
|
if (is != null)
|
is.close();
|
} catch (IOException e) {
|
}
|
try {
|
if (fos != null)
|
fos.close();
|
} catch (IOException e) {
|
}
|
}
|
}
|
|
/**
|
* 获取模板zb数据文件Url
|
* @return
|
*/
|
public Disposable getTempalteZbFileUrl(String templateExtendsId,File file, IDefaultCallBack callBack) {
|
String requestUrl = HDLLinkPMSdk.getUserRegionUrl() + "/iot-cloud/debug/backup/file/zigbeeDataNewestUrl";
|
|
|
JsonObject json = new JsonObject();
|
json.addProperty("templateExtendsId", templateExtendsId);
|
|
return HxHttp.builder()
|
.url(requestUrl)
|
.raw(json.toString())
|
.build()
|
.post()
|
.subscribeWith(new HDLResponse<String>() {
|
@Override
|
public void onResponse(String url) {
|
if (url == null) {
|
callBack.onSuccess();
|
} else {
|
if (callBack != null) {
|
downloadTempalteZbFile(url, file, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
callBack.onSuccess();
|
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
callBack.onFailure(error);
|
}
|
});
|
}
|
}
|
}
|
@Override
|
public void onFailure(HDLException e) {
|
if (callBack != null) {
|
callBack.onFailure(e);
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 下载模板zb数据文件文件
|
* @param callBack
|
* @return
|
*/
|
public Disposable downloadTempalteZbFile(String url,File file, IDefaultCallBack callBack) {
|
return HxHttp.builder()
|
.url(url)
|
.headers(HDLSmartHeader.IGNORE_SIGN_HEADER,1)
|
.build()
|
.download()
|
.subscribe(new Consumer<ResponseBody>() {
|
@Override
|
public void accept(ResponseBody responseBody) throws Exception {
|
//网络请求成功,读取文件保存到sd卡
|
// callBack.onSuccess(responseBody);
|
//保存文件
|
// File file = new File(getUserFilesPath() + "/" + templateBean.getTemplateExtendsId());
|
|
boolean saveResult = saveTempalteZbFile(responseBody,file);
|
if(saveResult) {
|
callBack.onSuccess();
|
}else {
|
callBack.onFailure(new HDLException(0,""));
|
}
|
}
|
}, new Consumer<Throwable>() {
|
@Override
|
public void accept(Throwable throwable) throws Exception {
|
/**
|
* 网络请求失败
|
* 具体可以自己实现
|
*/
|
callBack.onFailure(new HDLException(404,""));
|
}
|
});
|
}
|
|
|
/**
|
* 获取模板列表
|
* @param callBack
|
*/
|
public void GetTemplateList(int pageNo, int pageSize, ITemplateListCallBack callBack) {
|
HDLTemplateController.getInstance().GetTemplateList(pageNo,pageSize,new ITemplateListCallBack() {
|
@Override
|
public void onSuccess(TemplateListResponseBean templateListResponseBeans) {
|
callBack.onSuccess(templateListResponseBeans);
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 删除模板
|
* @param templateExtendsId 模板ID
|
* @param callBack
|
*/
|
public void DeleteTemplate(String templateExtendsId,IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().DeleteTemplate(templateExtendsId, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 更新网关数据(全量)
|
*/
|
public void UpdateTemplateGateway(String templateExtendsId , List<TemplateGatewayBean> gatewayBeans,
|
IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdateTemplateGateway(templateExtendsId, gatewayBeans, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 更新房间(楼层)信息(全量)
|
* @param templateExtendsId
|
* @param rooms
|
* @param callBack
|
* @return
|
*/
|
public void UpdateTemplateRoom(String templateExtendsId ,List<TemplateRoomPackBean.TemplateRoomInfoBean> rooms,
|
IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdateTemplateRoom(templateExtendsId, rooms, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 添加功能(全量)
|
* @param templateExtendsId 模板名称
|
* @param functionInfoList 功能列表
|
* @param callBack 回调
|
*/
|
public void UpdateTemplateFunctions(String templateExtendsId, List<TemplateFunctionBean> functionInfoList,
|
IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdateTemplateFunctions(templateExtendsId, functionInfoList, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if (callBack != null) {
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 更新模板场景(全量)
|
* @param templateExtendsId
|
* @param sceneBeans
|
* @param callBack
|
*/
|
public void UpdataTemplateScenes(String templateExtendsId, List<TemplateSceneBean> sceneBeans,
|
IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdataTemplateScenes(templateExtendsId, sceneBeans, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if(callBack != null){
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if(callBack != null){
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 更新模板自动化 (全量)
|
* @param templateExtendsId
|
* @param logicBeansJson
|
* @param callBack
|
*/
|
public void UpdataTemplateLogic(String templateExtendsId, JsonElement logicBeansJson,// List<TemplateLogicBean> logicBeans,
|
IDefaultCallBack callBack){
|
HDLTemplateController.getInstance().UpdataTemplateLogic(templateExtendsId, logicBeansJson, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if(callBack != null){
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if(callBack != null){
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 更新模板安防 (全量)
|
* @param templateExtendsId
|
* @param securityInfos
|
* @param callBack
|
*/
|
public void UpdataTemplateSecurity(String templateExtendsId, JsonElement securityInfos ,IDefaultCallBack callBack ){
|
HDLTemplateController.getInstance().UpdataTemplateSecurity(templateExtendsId, securityInfos, new IDefaultCallBack() {
|
@Override
|
public void onSuccess() {
|
if(callBack != null){
|
callBack.onSuccess();
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if(callBack != null){
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取区域信息
|
* @param templateExtendsId
|
* @param callBack
|
*/
|
public void GetTemplateAreaSpatialInfo(String templateExtendsId ,IGetTemplateSpatialInfoCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateAreaSpatialInfo(templateExtendsId, new IGetTemplateSpatialInfoCallBack() {
|
@Override
|
public void onSuccess(List<CloudTemplateSpatialInfo> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取网关列表
|
* @param id
|
* @param callBack
|
*/
|
public void GetTemplateGatewayList(String id, IGetTemplateGatewayListCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateGatewayList(id, new IGetTemplateGatewayListCallBack() {
|
@Override
|
public void onSuccess(List<TemplateGatewayBean> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取设备信息
|
* @param templateId
|
* @param callBack
|
*/
|
public void GetTemplateDeviceList(String templateId,IGetTemplateDeviceListCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateDeviceList(templateId, new IGetTemplateDeviceListCallBack() {
|
@Override
|
public void onSuccess(List<CloudTemplateDevice> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取功能列表
|
* @param templateExtendsId
|
* @param callBack
|
*/
|
public void GetTemplateFunctions(String templateExtendsId , ITemplateFunctionsCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateFunctions(templateExtendsId, new ITemplateFunctionsCallBack() {
|
@Override
|
public void onSuccess(List<TemplateFunctionBean> templateFunctionBean) {
|
if (callBack != null) {
|
callBack.onSuccess(templateFunctionBean);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取场景列表
|
* @param templateExtendsId
|
* @param callBack
|
*/
|
public void GetTemplateScenes(String templateExtendsId , ITemplateScenesCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateScenes(templateExtendsId, new ITemplateScenesCallBack() {
|
@Override
|
public void onSuccess(List<TemplateSceneBean> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
});
|
}
|
|
/**
|
* 获取安防列表
|
* @param templateExtendsId
|
* @param callBack
|
*/
|
public void GetTemplateSecurity(String templateExtendsId , ITemplateSecurityCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateSecurity(templateExtendsId, new ITemplateSecurityCallBack() {
|
@Override
|
public void onSuccess(List<TemplateSecurityBean> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
}
|
);
|
}
|
|
/**
|
* 获取逻辑列表
|
* @param templateExtendsId
|
* @param callBack
|
*/
|
public void GetTemplateLogic(String templateExtendsId ,ITemplateLogicCallBack callBack){
|
HDLTemplateController.getInstance().GetTemplateLogic(templateExtendsId, new ITemplateLogicCallBack() {
|
@Override
|
public void onSuccess(List<TemplateLogicBean> data) {
|
if (callBack != null) {
|
callBack.onSuccess(data);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException error) {
|
if (callBack != null) {
|
callBack.onFailure(error);
|
}
|
}
|
}
|
);
|
}
|
}
|