过滤条件树形数据
在过滤条件中通过树形展示数据列表,可已通过此接口实现
1.1 基础接口说明
接口名称:com.neusoft.saca.dataviz.data.engine.evaluator. TreeFilterValues
所在包:dataviz-lib-data.jar
1.2 getTreeValues方法
//获取树形数据
public abstract TreeValue getTreeValues(Map<String, Object> params);
1.2.1 传入参数
传入的参数params为Map
1.2.2 传出参数
属性 | 类型 | 是否可能为空 | 描述 |
---|---|---|---|
id | String | 否 | 实际值 |
text | String | 否 | 显示值 |
valid | boolean | 否 | 当前节点的id是否需为有效过滤值 |
children | List |
是 | 子节点 |
1.2.3 示例代码
/**
* 组织树
*
* @author ch-zhuo
*
*/
public class OrgTree implements TreeFilterValues, Serializable {
/**
*
*/
private static final long serialVersionUID = 2530615686597803088L;
private OrgManager orgManager = ContextLoader
.getCurrentWebApplicationContext().getBean(OrgManager.class);
@Override
public TreeValue getTreeValues(Map<String, Object> params) {
// 获取全部组织信息
List<OrgBO> orgs = this.orgManager.getAllOrgs();
if (orgs.isEmpty()) {
return null;
}
OrgBO topOrg = null;
// 查找根节点
for (int i = 0; i < orgs.size(); i++) {
// 查找父节点
OrgBO parentOrg = this.getOrg(orgs, orgs.get(i).getParentId());
if (parentOrg == null) {// 没有父节点,则为根节点
topOrg = orgs.remove(i);
break;
}
}
if (topOrg == null) {
return null;
}
// 返回组织树
return this.getOrgTree(orgs, topOrg);
}
/**
* 根据ID查找节点
*
* @param orgs
* @param id
* @return
*/
private OrgBO getOrg(List<OrgBO> orgs, String id) {
if (id == null) {
return null;
}
for (OrgBO orgBO : orgs) {
if (orgBO.getId().equals(id)) {
return orgBO;
}
}
return null;
}
/**
* 递归获取组织树数据
*
* @param orgs
* @param id
* @return
*/
private TreeValue getOrgTree(List<OrgBO> orgs, OrgBO parentOrg) {
if (parentOrg == null) {
return null;
}
List<OrgBO> childOrgs = new ArrayList<OrgBO>();
for (int i = 0; i < orgs.size(); i++) {
if (parentOrg.getId().equals(orgs.get(i).getParentId())) {
childOrgs.add(orgs.remove(i--));
}
}
TreeValue orgTree = new TreeValue();
orgTree.setId(parentOrg.getId());
orgTree.setText(parentOrg.getName());
if (!childOrgs.isEmpty()) {
List<TreeValue> children = new ArrayList<TreeValue>();
for (OrgBO org : childOrgs) {
TreeValue child = this.getOrgTree(orgs, org);
if (child != null) {
children.add(child);
}
}
orgTree.setChildren(children);
}
return orgTree;
}
}
需要在filter-tree.yaml中添加以下内容:
- name: 组织树
className: com.neusoft.saca.dataviz.system.filtertree.OrgTree
1.3 配置说明
系统默认只有两个树形数据,如果想要添加新的树形数据要修改配置文件dataviz-service\WEB-INF\conf\ filter-tree.yaml,按照如下格式添加即可。
- name: 名称
className: 获取数据值的实现类名称
如果是系统变量对此接口进行了扩展,需要把system-variable.yaml 中的dataType的值配置为11
1.4 使用说明
在条件设置页面,选择设置列表数据,然后选择树形列表,选择想要的树形数据即可。