程序字典

利用平台接口引擎编写程序且返回指定格式的数据用于构建动态字典。
创建过程中需输入自行开发的类名和方法名。

程序项配置

配置项
说明
服务类 后台接口服务编码
类方法 后台接口方法名
方法参数 接口传参
方法参数描述 参数注释

配置步骤

1. 点击【新建程序字典】进入到新建表单页面;

2. 填写字典基础信息,字典名称,字典编码,字典类型,所属模块信息;

3. 编写后台service,function,吧类名,方法名填写在页面对应位置上;

配置效果

相关代码

/***
 * @param dicInfoVo
 * @return JSONTreeNode
 */
public JSONTreeNode buildRoleTree(DicInfoVo dicInfoVo) {
    return rbacGrantRoleService.buildRoleTree(false);
}

@Override
public JSONTreeNode buildRoleTree(boolean develop, String... roleOrFolderIds) {
    JSONTreeNode rootNode = TreeUtil.buildRootNode();
    DynaBean table = beanService.getResourceTable("JE_DEMO_RO_ID");
    List<DynaBean> columns = (List<DynaBean>) table.get(BeanService.KEY_TABLE_COLUMNS);
    JSONTreeNode template = beanService.buildJSONTreeNodeTemplate(columns);
    StringBuffer sb = new StringBuffer();
    if (roleOrFolderIds == null || roleOrFolderIds.length == 0) {
        sb.append(" AND ROLE_DEVELOP = '" + (develop ? "1" : "0") + "'");
        sb.append(" AND JE_DEMO_RO_ID != 'ROOT'");
    } else {
        sb.append(" AND ROLE_DEVELOP = '" + (develop ? "1" : "0") + "'");
        sb.append(" AND (");
        for (int i = 0; i < roleOrFolderIds.length; i++) {
            if (i != 0) {
                sb.append(" OR ");
            }
            sb.append(" SY_PATH LIKE '" + roleOrFolderIds[i] + "%'");
        }
        sb.append(")");
    }
    sb.append(" ORDER BY SY_TREEORDERINDEX ASC");
    long time = System.currentTimeMillis();
    List<Map<String, Object>> beanList = metaService.selectSql(ConditionsWrapper.builder().table("JE_RBAC_ROLE").apply(sb.toString()));
    logger.info("查询树时间消耗:" + (System.currentTimeMillis() - time));
    for (Map<String, Object> eachBean : beanList) {
        JSONTreeNode node = null;
        if (roleOrFolderIds == null || roleOrFolderIds.length == 0) {
            if ("ROOT".equals(eachBean.get("SY_PARENT"))) {
                node = buildTreeNode(template, rootNode.getId(), eachBean);
            }
        } else {
            for (String eachId : roleOrFolderIds) {
                if (eachId.equals(eachBean.get("JE_DEMO_RO_ID"))) {
                    node = buildTreeNode(template, rootNode.getId(), eachBean);
                }
            }
        }
        if (node != null) {
            rootNode.getChildren().add(node);
        }
    }
    //递归形成树形结构
    for (JSONTreeNode eachNode : rootNode.getChildren()) {
        recursiveJsonTreeNode(template, eachNode, beanList);
    }

    return rootNode;
}

关键字

  • 数据字典
  • 程序字典
最后编辑: 肖海杰  文档更新时间: 2024-11-08 17:00   作者:呼丽华