过滤条件树形数据

在过滤条件中通过树形展示数据列表,可已通过此接口实现

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类型,其中包含当前登录人的ID,如果系统变量扩展此接口,可以通过params.get(PARAM_USERID)获取;如果不是系统变量扩展可忽略此参数。

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 使用说明

  在条件设置页面,选择设置列表数据,然后选择树形列表,选择想要的树形数据即可。

results matching ""

    No results matching ""