# 六、应用

# (一)应用与应用模板

门户系统中,在组织机构管理、运营他们负责的地区时,业务应用将是管理者最经常关注的"数据集合体"。业务应用旨在将多种数据集中到一个屏幕中显示,让管理者们一目了然的掌握整体情况。

门户系统向组织管理者提供多种预设模板,通过不同模板它们可自由选择自身关心的数据对象,以此来适应不同的应用场景。

在CoreSDK中,业务应用由应用类[Application]表示,模板数据根据模板类型不同,分别由抽象类模板数据[ModelData]的具象化子类表示。如地图模板数据由地图模板数据[MapModelData]表示、通讯模板关联的数据由通讯模板数据[CommModelData]表示。更多模板类参见预设模板

# (二)应用[Application]

应用[Application]的常用属性如下:

属性名 值类型 属性描述
name String 应用名称
remark String 备注
model Model 应用模板基础信息
data ModelData 模板数据配置信息
mapConfig MapConfig 地图默认配置
themeColor Color 应用主题色
titleColor Color 应用标题色
isShowApp boolean 是否同步到移动端
isPublish boolean 是否发布

常用方法如下:(get/set方法略)

方法名 返回类型 方法描述
- - -

# 1、获取应用

初始化成功后,可直接从Cellsys的organization对象中获取应用。具体代码示例如下:

List<Application> applications = Cellsys.organization.getApplications();//applications可能为null
if (applications != null && applications.size() > 0) {
    Application application = applications.get(0);
    /*属性获取*/
    String name = application.getName();//应用名称
    String remark = application.getRemark();//备注
    Color themeColor = application.getThemeColor();//应用主题色
    Color titleColor = application.getTitleColor();//应用标题字体颜色
    boolean isShowApp = application.isShowApp();//是否在移动端上展示
    boolean isPublish = application.isPublish();//是否发布
    /*地图配置*/
    MapConfig mapConfig = application.getMapConfig();//地图默认配置
    int zoom = mapConfig.defaultZoom;//默认缩放级别
    MapPoint center = mapConfig.defaultCenter;//默认中心点
    /*模板信息*/
    Model model = application.getModel();//模板信息
    String modelName = model.getName();//模板名称
    ModelType modelType = model.getType();//模板类型
    CommonInfo modelSetInfo = model.getModelSetInfo();//模板所属集合的简易信息
    /*模板数据配置类*/
    ModelData modelData = application.getData();//模板数据配置信息
    /*模板数据类可根据模板枚举类型转化为具体子类*/
    switch (model.getType()) {
        case ReportModel:
            ReportModelData reportModelData = (ReportModelData) modelData;
            break;
        case ProgressModel:
            ProgressModelData progressModelData = (ProgressModelData) modelData;
            break;
        case CommModel:
            CommModelData commModelData = (CommModelData) modelData;
            break;
        case EventModel:
            EventModelData eventModelData = (EventModelData) modelData;
            break;
        case NotesModel:
            NotesModelData notesModelData = (NotesModelData) modelData;
            break;
        case MapModel:
            MapModelData mapModelData = (MapModelData) modelData;
            break;
        default:
            //异常:未定义的模板类型
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 2、创建应用

/*应用的地图配置*/
MapPoint defaultCenter = new MapPoint(23.2123, 113.532612);//打开应用时地图界面的默认中心点
int defaultZoom = 17;//打开应用时地图界面的默认缩放级别
MapConfig mapConfig = new MapConfig(defaultCenter, defaultZoom);
/*颜色配置*/
Color themeColor = new Color(Ribbon.GeekBlue, RibbonLevel.L3);//主题色
Color titleColor = new Color(Ribbon.Gray, RibbonLevel.L9);//标题字体颜色
/*其他配置*/
boolean isShowApp = true;//是否在移动端展示
/*关键:模板数据类。想创建什么类型的模板应用,就使用对应的模板数据类。如想创建地图模板,就使用地图模板数据类*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
//...
List<Map> maps = new ArrayList<>();
maps.add(map1);
maps.add(map2);
//...
MapModelData modelData = new MapModelData(groups, maps);
Cellsys.organization.createApp("应用名称", "备注", modelData, mapConfig, themeColor, titleColor, isShowApp, new CsCallback<Application>() {
    @Override
    public void onSuccess(Application object) {
        /*创建成功*/
    }
        
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 3、修改应用

application.setName("修改应用名称");
application.setRemark("修改备注");
application.setTitleColor(new Color(Ribbon.GeekBlue, RibbonLevel.L3));
application.setThemeColor(new Color(Ribbon.GeekBlue, RibbonLevel.L3));
application.setShowApp(true);
/*修改应用的默认地图配置*/
MapPoint defaultCenter = new MapPoint(23.2123, 113.532612);//打开应用时地图界面的默认中心点
int defaultZoom = 17;//打开应用时地图界面的默认缩放级别
MapConfig mapConfig = new MapConfig(defaultCenter, defaultZoom);
application.setMapConfig(mapConfig);
/*修改模板数据*/
ModelData modelData = application.getData();//模板数据配置信息
//根据ModelData的type或Model的type来判断ModelData的具体类型。具体判断同上述“获取应用”的代码示例。这里我们以地图模板举例进行模板数据的修改
if (modelData instanceof MapModelData) {
    ((MapModelData) modelData).addMap(map);//给该应用多配置数个专题
    ((MapModelData) modelData).addMap(map2);//给该应用多配置数个专题
    ((MapModelData) modelData).removeGroup(group);//移除某个指定群组的配置
}
/*修改完毕后,调用update方法*/
Cellsys.organization.updateApp(application, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功,修改后的结果已同步到原参数application对象中*/
        String name = application.getName();
        //......
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 4、删除应用

Cellsys.organization.deleteApp(application, new CsCallback() {
    @Override
    public void onSuccess(Object object) {
        /*成功*/
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13

# (三)预设模板

# 1、预设模板总览

CoreSDK目前提供了以下预设模板(将会陆续追加):

  • 地图模板
  • 通讯模板
  • 事件模板
  • 随手记模板
  • 进度模板
  • 报告模板

# 2、模板数据类配置示例

# (1)地图模板数据类[MapModelData]

可自由配置专题、群组两种数据。

/*新建地图模板*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
//...
List<Map> maps = new ArrayList<>();
maps.add(map1);
maps.add(map2);
//...
     
MapModelData mapModelData = new MapModelData(groups, maps);//地图模板数据主要有群组与专题数据构成
/*修改模板数据配置*/
mapModelData.removeGroup(group1);//移除单个群组关联
mapModelData.addGroup(group2);//新增单个群组关联
mapModelData.setGroups(groups);//重新设置群组关联(之前的关联全部清除)
mapModelData.removeMap(map1);
mapModelData.addMap(map2);
mapModelData.setMaps(maps);//同上
     
/*获取模板数据
* 可从mapModelData获取到关联的群组、专题的具体对象*/
List<Group> groups1 = mapModelData.getGroup();
List<Map> maps1 = mapModelData.getMap();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# (2)通讯模板数据类[CommModelData]

可自由配置群组数据。

/*新建*/
List<Group> groups = new ArrayList<>();
groups.add(group1);
groups.add(group2);
CommModelData commModelData = new CommModelData(groups);
/*修改*/
commModelData.setGroups(groups);
/*查询*/
List<Group> groups1 = commModelData.getGroup();
1
2
3
4
5
6
7
8
9

# (3)事件模板数据类[EventModelData]

可自由配置事件数据。

注:有部分模板在数据类型的配置上是一样的,但它们在界面呈现、使用场景上是有所区别的。例如:事件模板、随手记模板、进度模板等都是以事件为主的应用模板,但使用场景与界面呈现会有不同。

/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
EventModelData eventModelData = new EventModelData(eventSets);
/*修改*/
eventModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = eventModelData.getEventSets();
1
2
3
4
5
6
7
8
9

# (4)随手记模板数据类[NotesModelData]

可自由配置事件数据。

/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
NotesModelData notesModelData = new NotesModelData(eventSets);
/*修改*/
notesModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = notesModelData.getEventSets();
1
2
3
4
5
6
7
8
9

# (5)进度模板数据类[ProgressModelData]

可自由配置事件数据。

/*新建*/
List<EventSet> eventSets = new ArrayList<>();
eventSets.add(eventSet1);
eventSets.add(eventSet2);
ProgressModelData progressModelData = new ProgressModelData(eventSets);
/*修改*/
progressModelData.setEvents(eventSets);
/*获取/查询关联数据*/
List<EventSet> eventSets1 = progressModelData.getEventSets();
1
2
3
4
5
6
7
8
9

# (6)报告模板数据类[ReportModelData]

可自由配置事件数据。

/*新增与修改*/
List<Long> eventIds = new ArrayList<>();
ReportModelData reportModelData = new ReportModelData();
reportModelData.setEventIds(eventIds);
reportModelData.setImgAlign(AlignType.Center);
reportModelData.setTextAlign(AlignType.Center);
reportModelData.setReportName("报告名称");
reportModelData.setShowEventName(true);
/*查询关联事件*/
reportModelData.queryEvents(new CsCallback<QueryResult<EventFeature>>() {
    @Override
    public void onSuccess(QueryResult<EventFeature> object) {
        /*分页信息-查询方法特有*/
        PageInfo pageInfo = object.pageInfo;//查询接口特有的分页信息
        int totalCount = pageInfo.totalCount;//数据总数
        int totalPage = pageInfo.totalPage;//总页数
        int pageNo = pageInfo.pageNo;//当前页码(从1开始)
        int pageSize = pageInfo.pageSize;//每页查询数量(注意!不一定和当前查询的数据总量匹配)
            
        /*获取查询结果*/
        List<EventFeature> eventFeatures = object.data;//查询结果可能为null
    }
         
    @Override
    public void onFailure(ErrorMessage errorMessage) {
        /*失败*/
        int code = errorMessage.getCode();//错误码
        String errMsg = errorMessage.getMessage();//错误信息
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30