项目管理

更新时间:2024-03-26 10:02:04下载pdf

本文介绍如何进行项目管理。

概念介绍

项目

项目为挂载在某一账号下的可独立操作的 单元,区域和设备等必须要挂载在某一项目下才可进行操作。

一个账号下可以有不定数量的项目,不同套餐的账号可配置不同数量的项目。新用户在注册登录后默认是没有项目的,需进行项目的创建流程后才可进行项目维度的相关操作。

Mesh 网络模式

Mesh 网络模式:指当前创建的项目使用的蓝牙 Mesh 网络的类型。目前,共有以下两种类型:

  • 单 Mesh 网络模式:当项目内设备数量在 300 台以内,或者项目内使用的是非蓝牙 Mesh 类型的设备时,建议选择该模式。例如,户外项目或是蓝牙 Mesh 设备数少于 300 台的室内项目版本。
  • 多 Mesh 网络模式:当项目内设备使用到蓝牙 Mesh 设备且设备数超过 300 台,或项目版本为停车场项目时,建议采用该模式。例如,停车场项目版本或是蓝牙 Mesh 设备数多于 300 台的室内项目版本。

项目版本

  • 室内项目:在建筑平面图上,对设备进行可视化管理。推荐简单的使用场景,项目地址可以简单用文案描述。适用于办公楼,商场等项目。Mesh 网络模式支持单 Mesh 网络模式和多 Mesh 网络模式
  • 户外项目:通过 GIS 地图精准定位设备,推荐区域较大,设备分散的使用场景,项目地址为国家和一级行政区作为划分。项目下级区域通过在地图上标记点位的形式展示。当前项目版本仅为高级版品牌商开通的账号才有创建权限。适用于户外路灯,充电桩等项目。Mesh 网络模式为单 Mesh 网络模式
  • 停车场项目:该版本的项目版本适用于停车场场景,Mesh 网络模式为多 Mesh 网络模式

注意事项

  • 单 Mesh 网络模式的项目创建完成后,会自动生成 Mesh 并关联到整个项目下的所有区域。
  • 多 Mesh 网络模式的项目创建完成后,项目以及空间不会默认绑定 Mesh,需用户手动创建 Mesh 并绑定到项目下的区域内。 绑定完成后,才可进行蓝牙 Mesh 协议的设备配网操作。

配置项目

获取 室内/户外/停车场 项目版本下数据配置。
根据当前登录账号所购买的套餐等级,动态下发当前账号所支持创建的项目的配置信息,例如室内项目、户外项目和停车场项目。您可以创建当前接口所返回类型的项目,创建未授权类型的项目时会报错。

接口说明

void getProjectConfigList(IThingResultCallback<List<LightingProjectConfigsBean>> callback);

LightingProjectConfigsBean 说明

项目配置信息类

参数 类型 说明
projectType int 当前项目版本:
  • 0:室内项目
  • 1:户外项目
  • 2:停车场项目
projectTypeName String 当前项目版本的名称
projectIconUrl String 当前项目版本的图标
spaceAttributes List 区域层级列表

AreaConfig 说明

区域层级信息类

参数 类型 说明
id int 区域层级 ID
name String 区域层级名称,例如园区-楼宇-楼层-房间
iconUrl String 区域层级 icon

示例代码

ThingCommercialLightingProject.getLightingProjectManager().getProjectConfigList(new IThingResultCallback<List<LightingProjectConfigsBean>>() {
            @Override
            public void onSuccess(List<LightingProjectConfigsBean> result) {
                if (null != result) {
                    iProjectIndexView.getProjectConfigListSuccess(result);
                }
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
                Log.e(TAG, "getProjectConfigList onError: errorCode=" + errorMessage);
                iProjectIndexView.getProjectConfigListError();
            }
        });

创建项目

接口说明

新建一个项目,当前支持创建室内项目和户外项目。

void createProject(
    int projectType,
    String name,
    String leaderName,
    String leaderMobile,
    String detail,
    String regionLocationId,
        int networkType,
    IThingHomeResultCallback callback);

参数说明

参数 说明 是否必填
projectType 项目版本
  • 0:默认室内项目
  • 1:户外项目
  • 2:停车场项目
可从获取 项目配置信息 方法获取类型 ID
name 项目名称
leaderName 项目负责人
leaderMobile 联系人信息
detail 详细地址
室内项目版本和停车场项目版本 必传,用于描述详细地址
户外项目版本 必传,用于描述户外项目位置,建议选中区域拼接
例如:中国浙江省,美国加利福尼亚州等
regionLocationId 区域 ID 用半角逗号,分割
户外项目版本 必传,用于描述户外项目位置
中国区:一级行政区,其他区:国家 +一级行政区
例如:浙江省 ID。美国 ID,加利福尼亚 ID
室内项目版本和停车场项目版本 此字段传空
networkType Mesh 网络模式:
  • 0:单 Mesh 模式,默认值
  • 1:多 Mesh 模式
参考 概念介绍

示例代码

ThingCommercialLightingProject.getLightingProjectManager().createProject(projectType, projectName, leaderName, leaderMobile, detailAddress, regionId, networkType, new IThingHomeResultCallback() {
    @Override
    public void onSuccess(HomeBean homeBean) {
        if (null == mProjectAddView) {
            return;
        }
        mProjectAddView.doSaveSuccess();
    }

    @Override
    public void onError(String s, String s1) {
        if (null == mProjectAddView) {
            return;
        }
        mProjectAddView.doSaveFailed(s1);
    }
});

编辑项目

接口说明

编辑项目信息。

void updateProjectInfo(
  String name,
  String regionLocationId,
  String detail,
  String leaderName,
  String leaderMobile,
  IResultCallback callback);

参数说明

参数 说明 是否必填
projectId 项目 ID
name 项目名称
regionLocationId 多个区域 ID 用半角逗号,分割
户外项目版本 必传,用于描述户外项目位置
中国区:一级行政区,其他区:国家 + 一级行政区
例如:浙江省 ID。美国 ID,加利福尼亚 ID
室内项目版本和停车场项目版本 此字段传空
detail 详细地址
室内项目版本和停车场项目版本 必传,用于描述详细地址
户外项目版本 必传,用于描述户外项目位置,建议选中区域拼接
例如:中国浙江省,美国加利福尼亚州等
leaderName 项目负责人
leaderMobile 负责人联系方式

示例代码

ThingCommercialLightingProject.newProjectInstance(projectId).updateProjectInfo(mHomeBean.getHomeId(), mHomeBean.getName(),mHomeBean.getLeaderName(), mHomeBean.getLeaderMobile(), regionId, content, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(error);
    }

    @Override
    public void onSuccess() {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.updateAddressDetail(content);
    }
});

删除项目

接口说明

删除一个已经创建的项目。项目删除后,所有的数据会被清空,已添加的设备会被解绑和重置。
删除项目为高风险操作,需要输入密码保证安全性。因此,删除项目方法将会在内部处理密码校验,输入正确的密码将直接调用删除操作。若有风险提示弹窗等相关交互,请在输入密码前展示。

void deleteProjectWithPassword(String password, IResultCallback callback);

参数说明

参数 说明
projectId 要删除的项目 ID
key 通过密码获取 key(用户体系:getKeyFromPassword
password 当前账号的密码

示例代码

ThingCommercialLightingProject.newProjectInstance(projectId).deleteProjectWithPassword(mIProjectInfoView.getProjectId(), password, new IResultCallback() {
    @Override
    public void onError(String s, String s1) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(s1);
    }

    @Override
    public void onSuccess() {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.doRemoveView(true);
    }
});

查询项目列表

接口说明

获取已经创建过的项目列表。

void getProjectList(IThingGetHomeListCallback callback);

示例代码

ThingCommercialLightingProject.getLightingProjectManager().getProjectList(new IThingGetHomeListCallback() {
    @Override
    public void onSuccess(List<HomeBean> list) {
        Log.i(TAG, "queryProjectList onSuccess: " + JSON.toJSONString(list));
        if (null == iProjectIndexView.getContext()) {
            return;
        }
        if (CollectionUtils.isEmpty(list)) {
            iProjectIndexView.showProjectEmptyView();
        } else {
            iProjectIndexView.setProjectList(list);
        }
    }

    @Override
    public void onError(String s, String s1) {
        Log.e(TAG, "queryProjectList onError: errorCode=" + s);
    }
});

查询项目详情

接口说明

获取指定项目详情。

void getProjectDetail(IThingHomeResultCallback callback);

参数说明

参数 说明
projectId 项目 ID,可通过 获取项目列表 返回的数据,获取 projectId

示例代码

ThingCommercialLightingProject.newProjectInstance(long projectId).getProjectDetail(mIProjectInfoView.getProjectId(), new IThingHomeResultCallback() {
    @Override
    public void onSuccess(HomeBean homeBean) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.setProjectData(homeBean);
    }

    @Override
    public void onError(String s, String s1) {
        if (null == mIProjectInfoView) {
            return;
        }
        mIProjectInfoView.showToast(s1);
    }
});

查询数据区国家列表

接口说明

根据当前账号所属数据区,返回国家列表数据。目前支持:中国区(中国),美国区(美国,日本,中国香港),欧洲区(澳大利亚)三个数据区的六个国家。数据区的国家支持动态新增,以实际返回为准。如有新增需求,请联系产品经理。

void getRegionList(IThingResultCallback<List<LightingRegionListBean>> listener);

LightingRegionListBean 字段说明

字段 类型 说明
locationId String 当前区域 ID。
name String 当前区域名称,已支持多语言。
pinyinInitials String 区域名称首字母。
中文:拼音首字母,其他:英文首字母
该字段主要用于自定义排序/索引。
children List 当前区域下级子区域。例如:国家下的一级行政区。

示例代码

ThingCommercialLightingRegion.getRegionManager().getRegionList(new IThingResultCallback<List<LightingRegionListBean>>() {
    @Override
    public void onSuccess(List<LightingRegionListBean> result) {
        if (result != null) {
            mRegionListView.getRegionListSuccess(result);
        }
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        mRegionListView.getRegionListError(errorMessage);
    }
});