hxb
2024-10-24 d723fee177238df0dbab80eb788876ebd154927d
HDLLinkPMSdk/src/main/java/com/hdl/linkpm/sdk/project/HDLLinkPMProject.java
New file
@@ -0,0 +1,378 @@
package com.hdl.linkpm.sdk.project;
import com.google.gson.JsonArray;
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.home.bean.GatewayBindBean;
import com.hdl.linkpm.sdk.home.bean.GatewayInfoBean;
import com.hdl.linkpm.sdk.home.bean.HomeInfoBean;
import com.hdl.linkpm.sdk.home.controller.HDLPMHomeController;
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.NewProjectRequestBean;
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.project.controller.HDLPMProjectController;
import java.util.List;
/**
 * Created by jlchen on 12/8/21.
 * 项目管理相关
 */
public class HDLLinkPMProject {
    //instance
    private volatile static HDLLinkPMProject instance;
    /**
     * getInstance
     *
     * @return HDLLinkProject
     */
    public static synchronized HDLLinkPMProject getInstance() {
        if (instance == null) {
            synchronized (HDLLinkPMProject.class) {
                if (instance == null) {
                    instance = new HDLLinkPMProject();
                }
            }
        }
        return instance;
    }
    /**
     * 获取指定公司员工列表 支持名称模糊查询
     *
     * @param companyId 公司ID
     * @param userName  名称模糊查询
     * @param callBack
     * @return
     */
    public void getDebuggerList(String companyId, String userName, IEmployeeInfoCallBack callBack) {
        HDLPMProjectController.getInstance().getDebuggerList(companyId, userName, callBack);
    }
    /**
     * 添加调试人员、转移调试人员
     *
     * @param houseId  住宅id
     * @param userId   用户id
     * @param callBack
     * @return
     */
    public void changeHomeDebugger(String houseId, String userId, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().changeHomeDebugger(houseId, userId, callBack);
    }
    /**
     * 批量添加调试人员、转移调试人员
     *
     * @param houseIds      住宅id 列表
     * @param userId        用户id
     * @param communityCode 社区code
     * @param callBack
     * @return
     */
    public void batchChangeHomeDebugger(List<String> houseIds, String userId, String communityCode, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().batchChangeHomeDebugger(houseIds, userId, communityCode, callBack);
    }
    /**
     * 获取项目列表、指定项目类型查询所有调试状态
     *
     * @param projectTypes 数组 项目类型 ProjectType.Home、ProjectType.RealEstate、ProjectType.PublicBuilding、ProjectType.Hotel
     * @param pageNo
     * @param pageSize
     * @param callBack
     * @return
     */
    public void getProjectList(List<String> projectTypes, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        HDLPMProjectController.getInstance().getProjectList(projectTypes, "", null, pageNo, pageSize, callBack);
    }
    /**
     * 获取项目列表
     * 支持根据项目类型
     * 支持根据项目名字模糊查询
     * 支持更加调试状态集合查询
     *
     * @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 void getProjectList(List<String> projectTypes, String communityName, List<String> debugStatus, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        HDLPMProjectController.getInstance().getProjectList(projectTypes, communityName, debugStatus, pageNo, pageSize, callBack);
    }
    public void getRedebugProjectList(String communityName,String companyId,String debugUserId, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        HDLPMProjectController.getInstance().getReDebugProjectList(communityName,companyId, debugUserId, pageNo, pageSize, callBack);
    }
    public void getProjectListExcuse(List<String> projectTypes, String communityName, List<String> debugStatus, int pageNo, int pageSize, IProjectInfoListCallBack callBack) {
        HDLPMProjectController.getInstance().getProjectListExecute(projectTypes, communityName, debugStatus, pageNo, pageSize, callBack);
    }
    public void addDownloadCount(String driverVersionId) {
        HDLPMProjectController.getInstance().addDownloadCount(driverVersionId);
    }
    public void addDownloadFirmwareCount(String firmwareVersionId) {
        HDLPMProjectController.getInstance().addDownloadFirmwareCount(firmwareVersionId);
    }
    public void addDownloadThirdCount(String thirdFirmwareVersionId) {
        HDLPMProjectController.getInstance().addDownloadThirdCount(thirdFirmwareVersionId);
    }
    /**
     * 新建项目
     *
     * @param newProjectRequestBean 项目信息对象
     * @param callBack
     * @return
     */
    public void addNewHouseProject(NewProjectRequestBean newProjectRequestBean, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().addNewHouseProject(newProjectRequestBean, callBack);
    }
    /**
     * 交付项目 所有房屋处于已交付状态才通过 否则提示尚未有未交付的房屋
     * 针对酒店和地产项目
     *
     * @param communityId 小区ID
     * @param callBack
     * @return
     */
    public void deliveryRoject(String communityId, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().deliveryRoject(communityId, callBack);
    }
    /**
     * 撤回交付的项目 已交付的项目变为待交付 针对酒店和地产项目
     *
     * @param communityId 小区ID
     * @param callBack
     * @return
     */
    public void withdrawDeliveryProject(String communityId, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().withdrawDeliveryProject(communityId, callBack);
    }
    /******************************房屋管理******************************/
    /**
     * 获取项目的房屋信息列表,分页查询
     *
     * @param requestBean 请求参数对象
     * @param callBack
     * @return
     */
    public void getProjecHouseList(HousePageRequestBean requestBean, IProjectHouseListCallBack callBack) {
        HDLPMProjectController.getInstance().getProjecHouseList(requestBean, callBack);
    }
    public void getProjecHouseListExecute(HousePageRequestBean requestBean, IProjectHouseListCallBack callBack) {
        HDLPMProjectController.getInstance().getProjecHouseListExecute(requestBean, callBack);
    }
    /**
     * 绑定极光推送
     *
     * @param communityCode 项目code
     * @param debugStatus   调试状态 0:待调试  1:调试中 2:待验收 3:已完成 4:已交付,为空则不过滤
     * @param houseIds      房屋id集合
     * @param callBack
     * @return
     */
    /**
     *
     * @param deviceName  设备名称
     * @param pushToken  App的推送Token,在极光为RegId  设备类型,可用值:Android、IOS、WinPhone
     * @param software  软件来源,Evoyo、ON、ON_Plus、DebugTreasure
     * @param callBack
     */
    public void bindJPushId(String deviceName, String pushToken, String software, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().bindJPushId(deviceName, pushToken, software, callBack);
    }
    /**
     *
     * @param homeId  住宅id
     * @param homeName  住宅名称
     * @param callBack
     */
    public void syncHome(String homeId, String homeName, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().updateHouseName(homeId, homeName, callBack);
    }
    /**
     * 解绑极光推送
     *
     * @param callBack
     * @return
     */
    public void unBindJPushId(IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().unBindJPushId(callBack);
    }
    /**
     * 批量更新房屋调试状态
     *
     * @param communityCode 项目code
     * @param debugStatus   调试状态 0:待调试  1:调试中 2:待验收 3:已完成 4:已交付,为空则不过滤
     * @param houseIds      房屋id集合
     * @param callBack
     * @return
     */
    public void batchChangeHouseDebugstatus(String communityCode, int debugStatus, List<String> houseIds, IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().batchChangeHouseDebugstatus(communityCode, debugStatus, houseIds, callBack);
    }
    /**
     * 获取驱动分页列表
     *
     * @param driverTypeId 驱动类型id
     * @param callBack
     * @return
     */
    public void getDriverList(String driverTypeId, DriverTypeListCallBack callBack) {
        HDLPMProjectController.getInstance().driverList(driverTypeId, callBack);
    }
    /**
     * 获取驱动分页列表
     *
     * @param driverId 驱动类型id
     * @param callBack
     * @return
     */
    public void getVersionList(String driverId, DriverDetailListCallBack callBack) {
        HDLPMProjectController.getInstance().versionList(driverId, callBack);
    }
    /**
     * 查询红外设备类型列表
     *
     * @param deviceType 设备类型
     * @param callBack
     * @return
     */
    public void getIrDeviceTypeList(String deviceType, IResponseCallBack<List<IrDeviceTypeBean>> callBack) {
        HDLPMProjectController.getInstance().getIrDeviceTypeList(deviceType, callBack);
    }
    /**
     * 查询红外设备类型的品牌列表
     *
     * @param deviceTypeId 设备类型主键Id
     * @param callBack
     * @return
     */
    public void getIrDeviceBrandList(String deviceTypeId, IResponseCallBack<List<IrDeviceBrandBean>> callBack) {
        HDLPMProjectController.getInstance().getIrDeviceBrandList(deviceTypeId, callBack);
    }
    /**
     * 查询红外设备类型的品牌红外码库列表
     *
     * @param brandId 品牌主键Id
     * @param callBack
     * @return
     */
    public void getIrDeviceCodeList(String brandId, IResponseCallBack<List<IrDeviceCodeBean>> callBack) {
        HDLPMProjectController.getInstance().getIrDeviceCodeList(brandId, callBack);
    }
    /**
     * 驱动上传
     *
     * @param url 驱动下载路径
     * @param callBack
     * @return
     */
    public void downLoadDriver(String url, DriverDownLoadCallBack callBack) {
        HDLPMProjectController.getInstance().downLoadDriver(url, callBack);
    }
    /******************************数据上传云端******************************/
    /**
     * house表的数据没有同步到home表、数据存在两张表里面,需要客户端调接口同步
     *
     * @param homeInfoBean 住宅Info
     * @param callBack
     * @return
     */
    public void synchHouseToHome(HomeInfoBean homeInfoBean, IDefaultCallBack callBack) {
        HDLPMHomeController.getInstance().synchHouseToHome(homeInfoBean, callBack);
    }
    /**
     * 绑定网关到住宅
     *
     * @param bean     网关信息
     * @param callBack
     * @return
     */
    public void bindGateway(GatewayBindBean bean, IResponseCallBack<GatewayInfoBean> callBack) {
        HDLPMHomeController.getInstance().bindGateway(bean, callBack);
    }
    /**
     * 设备基本信息(oid)
     * @param homeId
     * @param devicesInfo
     * @param callBack
     */
    public void fullUpdateDeviceInfo(String homeId, JsonArray devicesInfo,IDefaultCallBack callBack){
        HDLPMProjectController.getInstance().fullUpdateDeviceInfo(homeId, devicesInfo,callBack);
    }
    /**
     * 更新功能信息,全量
     * @param homeId
     * @param funtionListInfo
     * @param callBack
     */
    public void fullUpdateFunctionInfo(String homeId ,String gatewayId,JsonArray funtionListInfo ,IDefaultCallBack callBack){
        HDLPMProjectController.getInstance().fullUpdateFunctionListInfo(homeId,gatewayId,funtionListInfo,callBack);
    }
    public void fullUpdateSceneInfo(String homeId ,JsonArray data ,IDefaultCallBack callBack){
        HDLPMProjectController.getInstance().fullUpdateSceneListInfo(homeId,data,callBack);
    }
    public void fullUpdateLogicInfo(String homeId ,JsonArray data ,IDefaultCallBack callBack){
        HDLPMProjectController.getInstance().fullUpdateLogicListInfo(homeId,data,callBack);
    }
    public void fullUpdateUidInfo(String homeId ,JsonArray data ,IDefaultCallBack callBack){
        HDLPMProjectController.getInstance().fullUpdateUidInfo(homeId,data,callBack);
    }
    public void fullUpdateSecuritysListInfo(String homeId,String gatewayId ,JsonArray data ,IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().fullUpdateSecuritysListInfo(homeId, gatewayId, data, callBack);
    }
    public void fullUpdateGroupControlListInfo(String homeId,String gatewayId ,JsonArray data ,IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().fullUpdateSecuritysListInfo(homeId, gatewayId, data, callBack);
    }
    public void fullAddGroupControlList(String homeId,String gatewayId ,JsonArray data ,IDefaultCallBack callBack) {
        HDLPMProjectController.getInstance().fullAddGroupControlList(homeId, gatewayId, data, callBack);
    }
}