hxb
2024-10-24 773b9953ad645b39a9efa8ab6d71dfc9d9e4e22e
HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/project/controller/HDLPMProjectController.java
New file
@@ -0,0 +1,1092 @@
package com.hdl.linkpm.sdk.project.controller;
import android.text.TextUtils;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.hdl.hdlhttp.HxHttp;
import com.hdl.linkpm.sdk.core.api.HDLCloudProjectApi;
import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack;
import com.hdl.linkpm.sdk.core.callback.IResponseCallBack;
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.project.bean.DriveDetailListBean;
import com.hdl.linkpm.sdk.project.bean.DriveTypeListBean;
import com.hdl.linkpm.sdk.project.bean.EmployeeInfoBean;
import com.hdl.linkpm.sdk.project.bean.HousePageRequestBean;
import com.hdl.linkpm.sdk.project.bean.IrDeviceBrandBean;
import com.hdl.linkpm.sdk.project.bean.IrDeviceCodeBean;
import com.hdl.linkpm.sdk.project.bean.IrDeviceTypeBean;
import com.hdl.linkpm.sdk.project.bean.ProjectHouseListBean;
import com.hdl.linkpm.sdk.project.bean.NewProjectRequestBean;
import com.hdl.linkpm.sdk.project.bean.ProjectInfoListBean;
import com.hdl.linkpm.sdk.project.callback.DriverDetailListCallBack;
import com.hdl.linkpm.sdk.project.callback.DriverDownLoadCallBack;
import com.hdl.linkpm.sdk.project.callback.DriverTypeListCallBack;
import com.hdl.linkpm.sdk.project.callback.IEmployeeInfoCallBack;
import com.hdl.linkpm.sdk.project.callback.IProjectHouseListCallBack;
import com.hdl.linkpm.sdk.project.callback.IProjectInfoListCallBack;
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils;
import com.hdl.linkpm.sdk.utils.HDLGsonUtils;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import okhttp3.ResponseBody;
/**
 * Created by jlchen on 12/8/21.
 * 项目管理相关的网络请求
 */
public class HDLPMProjectController {
    /**
     * instance
     */
    private volatile static HDLPMProjectController instance;
    /**
     * getInstance
     *
     * @return HDLProjectController
     */
    public static synchronized HDLPMProjectController getInstance() {
        if (instance == null) {
            synchronized (HDLPMProjectController.class) {
                if (instance == null) {
                    instance = new HDLPMProjectController();
                }
            }
        }
        return instance;
    }
    /**
     * 获取指定公司员工列表 支持名称模糊查询
     *
     * @param companyId 公司ID
     * @param userName  名称模糊查询
     * @param callBack
     * @return
     */
    public Disposable getDebuggerList(String companyId, String userName, IEmployeeInfoCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_DEBUGGER_GET);
        JsonObject json = new JsonObject();
        json.addProperty("companyId", companyId);
        json.addProperty("userName", userName);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<List<EmployeeInfoBean>>() {
                    @Override
                    public void onResponse(List<EmployeeInfoBean> response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 添加调试人员、转移调试人员
     *
     * @param houseId  住宅id
     * @param userId   用户id
     * @param callBack
     * @return
     */
    public Disposable changeHomeDebugger(String houseId, String userId, IDefaultCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_DEBUGGER_ADD);
        JsonObject json = new JsonObject();
        json.addProperty("houseId", houseId);
        json.addProperty("userId", userId);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 批量添加调试人员、转移调试人员
     *
     * @param houseIds      住宅id 列表
     * @param userId        用户id
     * @param communityCode 社区code
     * @param callBack
     * @return
     */
    public Disposable batchChangeHomeDebugger(List<String> houseIds, String userId, String communityCode, IDefaultCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_DEBUGGER_BATCHADD);
        JsonObject json = new JsonObject();
        json.add("houseIds", HDLGsonUtils.toJsonArray(houseIds));
        json.addProperty("userId", userId);
        json.addProperty("communityCode", communityCode);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /******************************网关驱动******************************/
    /**
     * 新建项目
     *
     * @param callBack
     * @return
     */
    public Disposable driverList(String driverTypeId, DriverTypeListCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_GET_DRIVERLIST);
        JsonObject json = new JsonObject();
        json.addProperty("driverTypeId", driverTypeId);
        json.addProperty("pageNo", "1");
        json.addProperty("pageSize", "100");
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<DriveTypeListBean>() {
                    @Override
                    public void onResponse(DriveTypeListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 新建项目
     *
     * @param callBack
     * @return
     */
    public Disposable versionList(String driverId, DriverDetailListCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_GET_VERSIONLIST);
        JsonObject json = new JsonObject();
        json.addProperty("driverId", driverId);
        json.addProperty("pageNo", "1");
        json.addProperty("pageSize", "100");
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<DriveDetailListBean>() {
                    @Override
                    public void onResponse(DriveDetailListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 查询红外设备类型列表
     *
     * @param callBack
     * @return
     */
    public Disposable getIrDeviceTypeList(String deviceType, IResponseCallBack<List<IrDeviceTypeBean>> callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_GET_IR_DEVICETYPELIST);
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(deviceType)) {
            json.addProperty("deviceType", deviceType);
        }
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<List<IrDeviceTypeBean>>() {
                    @Override
                    public void onResponse(List<IrDeviceTypeBean> response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 查询红外设备类型的品牌列表
     *
     * @param callBack
     * @return
     */
    public Disposable getIrDeviceBrandList(String deviceTypeId, IResponseCallBack<List<IrDeviceBrandBean>> callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_GET_IR_DEVICEBRANDLIST);
        JsonObject json = new JsonObject();
        json.addProperty("deviceTypeId", deviceTypeId);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<List<IrDeviceBrandBean>>() {
                    @Override
                    public void onResponse(List<IrDeviceBrandBean> response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 查询红外设备类型的品牌红外码库列表
     *
     * @param callBack
     * @return
     */
    public Disposable getIrDeviceCodeList(String brandId, IResponseCallBack<List<IrDeviceCodeBean>> callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_GET_IR_DEVICECODELIST);
        JsonObject json = new JsonObject();
        json.addProperty("brandId", brandId);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<List<IrDeviceCodeBean>>() {
                    @Override
                    public void onResponse(List<IrDeviceCodeBean> response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 下载驱动
     *
     * @param callBack
     * @return
     */
    public Disposable downLoadDriver(String url, DriverDownLoadCallBack 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);
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        /**
                         * 网络请求失败
                         * 具体可以自己实现
                         */
                        HDLExceptionSubmitUtils.submit(url, null, throwable);
                        if (callBack != null) {
                            callBack.onFailure(new HDLException(403, throwable.getMessage()));
                        }
                    }
                });
    }
    /******************************************************************/
    /******************************项目管理******************************/
    /**
     * 获取项目列表
     *
     * @param projectTypes  数组 项目类型 ProjectType.Home、ProjectType.RealEstate、ProjectType.PublicBuilding、ProjectType.Hotel
     * @param communityName 通过项目名称模糊查询
     * @param debugStatus   数组 调试状态 To_Be_Debugged(0, "待调试")、Debugging(1, "调试中")、WAIT_DELIVERED(3, "待交付")、Delivered(4, "已交付")、INITIAL_TATE(5,"初始态")
     * @param pageNo
     * @param pageSize
     * @param callBack
     * @return
     */
    public Disposable getProjectList(List<String> projectTypes, String communityName, List<String> debugStatus, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_GET_PAGE);
        JsonObject json = new JsonObject();
        json.add("projectTypes", HDLGsonUtils.toJsonArray(projectTypes));
        json.addProperty("pageNo", pageNo);
        json.addProperty("pageSize", pageSize);
        if (debugStatus != null && debugStatus.size() > 0) {
            json.add("debugStatus", HDLGsonUtils.toJsonArray(debugStatus));
        }
        if (!TextUtils.isEmpty(communityName)) {
            json.addProperty("communityName", communityName);
        }
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<ProjectInfoListBean>() {
                    @Override
                    public void onResponse(ProjectInfoListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /******************************项目管理******************************/
    /**
     * 获取项目列表
     *
     * @param companyId   所属企业单位id
     * @param debugUserId 调试员工账号id
     * @param pageNo
     * @param pageSize
     * @param callBack
     * @return
     */
    public Disposable getReDebugProjectList(String communityName, String companyId, String debugUserId, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_REDEBUG_GET_PAGE);
        JsonObject json = new JsonObject();
        json.addProperty("companyId", companyId);
        json.addProperty("debugUserId", debugUserId);
        json.addProperty("pageNo", pageNo);
        json.addProperty("pageSize", pageSize);
        if (!TextUtils.isEmpty(communityName)) {
            json.addProperty("communityName", communityName);
        }
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<ProjectInfoListBean>() {
                    @Override
                    public void onResponse(ProjectInfoListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable getProjectListExecute(List<String> projectTypes, String communityName, List<String> debugStatus, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_GET_PAGE);
        JsonObject json = new JsonObject();
        json.add("projectTypes", HDLGsonUtils.toJsonArray(projectTypes));
        json.addProperty("pageNo", pageNo);
        json.addProperty("pageSize", pageSize);
        if (debugStatus != null && debugStatus.size() > 0) {
            json.add("debugStatus", HDLGsonUtils.toJsonArray(debugStatus));
        }
        if (!TextUtils.isEmpty(communityName)) {
            json.addProperty("communityName", communityName);
        }
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<ProjectInfoListBean>() {
                    @Override
                    public void onResponse(ProjectInfoListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 新建项目
     *
     * @param newProjectRequestBean 项目信息对象
     * @param callBack
     * @return
     */
    public Disposable addNewHouseProject(NewProjectRequestBean newProjectRequestBean, IDefaultCallBack callBack) {
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_CREATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(HDLGsonUtils.toJson(newProjectRequestBean))
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, newProjectRequestBean, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 交付项目 所有房屋处于已交付状态才通过 否则提示尚未有未交付的房屋
     * 针对酒店和地产项目
     *
     * @param communityId 小区ID
     * @param callBack
     * @return
     */
    public Disposable deliveryRoject(String communityId, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("communityId", communityId);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_DELIVERY_ROJECT);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 撤回交付的项目 已交付的项目变为待交付 针对酒店和地产项目
     *
     * @param communityId 小区ID
     * @param callBack
     * @return
     */
    public Disposable withdrawDeliveryProject(String communityId, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("communityId", communityId);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_WITHDRAW_DELIVERY_PROJECT);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /******************************房屋管理******************************/
    /**
     * 获取项目的房屋信息列表,分页查询
     *
     * @param requestBean 请求参数对象
     * @param callBack
     * @return
     */
    public Disposable getProjecHouseList(HousePageRequestBean requestBean, IProjectHouseListCallBack callBack) {
        String requestJsonStr = HDLGsonUtils.toJson(requestBean);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_GET_HOUSE_PAGE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(requestJsonStr)
                .build()
                .post()
                .subscribeWith(new HDLResponse<ProjectHouseListBean>() {
                    @Override
                    public void onResponse(ProjectHouseListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, requestBean, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable getProjecHouseListExecute(HousePageRequestBean requestBean, IProjectHouseListCallBack callBack) {
        String requestJsonStr = HDLGsonUtils.toJson(requestBean);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_PROJECT_GET_HOUSE_PAGE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(requestJsonStr)
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<ProjectHouseListBean>() {
                    @Override
                    public void onResponse(ProjectHouseListBean response) {
                        if (callBack != null) {
                            callBack.onSuccess(response);
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, requestBean, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 批量更新房屋调试状态
     *
     * @param communityCode 项目code
     * @param debugStatus   调试状态 0:待调试  1:调试中 2:待验收 3:已完成 4:已交付,为空则不过滤
     * @param houseIds      房屋id集合
     * @param callBack
     * @return
     */
    public Disposable batchChangeHouseDebugstatus(String communityCode, int debugStatus, List<String> houseIds, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("communityCode", communityCode);
        json.addProperty("debugStatus", debugStatus);
        json.add("houseIds", HDLGsonUtils.toJsonArray(houseIds));
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_BATCH_UPDATE_STATUS);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 设备基本信息(oid)
     *
     * @param homeId
     * @param devicesInfo
     * @param callBack
     * @return
     */
    public Disposable fullUpdateDeviceInfo(String homeId, JsonArray devicesInfo, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.add("devices", devicesInfo);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_DEVICE_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    /**
     * 更新功能信息,全量
     */
    public Disposable fullUpdateFunctionListInfo(String homeId, String gatewayId, JsonArray functionListInfo, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("gatewayId", gatewayId);
        json.add("devices", functionListInfo);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_FUNCTION_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable fullUpdateSceneListInfo(String homeId, JsonArray data, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.add("scenes", data);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_SCENE_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable fullUpdateLogicListInfo(String homeId, JsonArray data, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.add("logics", data);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_LOGIC_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable fullUpdateUidInfo(String homeId, JsonArray data, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.add("rooms", data);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_ROOM_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable fullUpdateSecuritysListInfo(String homeId, String gatewayId, JsonArray data, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("gatewayId", gatewayId);
        json.add("securitys", data);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_SECURITY_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable fullAddGroupControlList(String homeId, String gatewayId, JsonArray data, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("gatewayId", gatewayId);
        json.add("infos", data);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSE_GROUPCONTROL_FULL_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .executePost()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable updateHouseName(String homeId, String homeName, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("homeName", homeName);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_HOUSENAME_UPDATE);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable addDownloadCount(String driverVersionId) {
        JsonObject json = new JsonObject();
        json.addProperty("driverVersionId", driverVersionId);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_ADD_DOWNLOADCOUNT);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                    }
                });
    }
    public Disposable addDownloadFirmwareCount(String firmwareVersionId) {
        JsonObject json = new JsonObject();
        json.addProperty("firmwareVersionId", firmwareVersionId);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_ADD_FIRMWARE_DOWNLOADCOUNT);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                    }
                });
    }
    public Disposable addDownloadThirdCount(String thirdFirmwareVersionId) {
        JsonObject json = new JsonObject();
        json.addProperty("thirdFirmwareVersionId", thirdFirmwareVersionId);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_ADD_THIRD_DOWNLOADCOUNT);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                    }
                });
    }
    /******************************极光推送******************************/
    public Disposable bindJPushId(String deviceName, String pushToken, String software, IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("deviceName", deviceName);
        json.addProperty("deviceType", "Android");
        json.addProperty("produce", "true");
        json.addProperty("pushToken", pushToken);
        json.addProperty("software", software);
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_JPUSH_BIND);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            HDLLinkPMUser.getInstance().saveHDLJpushId(response);
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
    public Disposable unBindJPushId(IDefaultCallBack callBack) {
        JsonObject json = new JsonObject();
        json.addProperty("pushId", HDLLinkPMUser.getInstance().getHDLJpushId());
        String requestUrl = HDLCloudProjectApi.getRequestUrl(HDLCloudProjectApi.POST_JPUSH_UNBIND);
        return HxHttp.builder()
                .url(requestUrl)
                .raw(json.toString())
                .build()
                .post()
                .subscribeWith(new HDLResponse<String>() {
                    @Override
                    public void onResponse(String response) {
                        if (callBack != null) {
                            callBack.onSuccess();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HDLExceptionSubmitUtils.submit(requestUrl, json, e);
                        if (callBack != null) {
                            callBack.onFailure(e);
                        }
                    }
                });
    }
}