树表查不到二级目录

场景:树表结构查不到二级模型内容,联动配置如下

树表查不到二级目录

问题:界面只显示部门,不显示岗位。

已知:

  1. 自定义部门代理模型继承了PamirsDepartment

    @Model.model(DepartmentDoc.MODEL_MODEL)
    @Model.Advanced(type = ModelTypeEnum.PROXY)
    @Model(displayName = "部门资料代理模型", summary = "部门资料代理模型")
    public class DepartmentDoc extends PamirsDepartment {
    
       public static final String MODEL_MODEL = "top.DepartmentDoc";
    
       @Field.many2one
       @Field(displayName = "上级部门")
       private DepartmentDoc parent;
    
       @Field.one2many
       @Field(displayName = "岗位列表")
       private List positionLists;
    }
  2. 自定义岗位代理模型继承了PamirsPosition

    @Model.model(PositionDoc.MODEL_MODEL)
    @Model(displayName = "岗位代理模型", summary = "岗位代理模型")
    @Model.Advanced(type = ModelTypeEnum.PROXY)
    public class PositionDoc extends PamirsPosition {
    
       public static final String MODEL_MODEL = "top.PositionDoc";
    
       @Field.many2one
       @Field(displayName = "上级岗位")
       private PositionDoc parent;
    }
  • 首先查看控制台相应请求
    树表查不到二级目录

  • 找到请求接口进后端debug,pro.shushi.pamirs.boot.web.action.UiTreeAction#fetchChildren

树表查不到二级目录

  • 检查这两个数据是否正常

  • 继续debug可知,在queryWrapper中使用departmentCode没有查询出数据,这时候回看模型定义,发现岗位列表中没有定义关联字段,导致没有查出数据。pro.shushi.pamirs.boot.web.manager.tree.UiTreeRelationQueryManager#_fetchIsLeaf
    树表查不到二级目录

  • 解决:在模型配置中添加关系字段@Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"}),并和父类中的关系字段保持一致

部门代理模型:

@Model.model(DepartmentDoc.MODEL_MODEL)
@Model.Advanced(type = ModelTypeEnum.PROXY)
@Model(displayName = "部门资料代理模型", summary = "部门资料代理模型")
public class DepartmentDoc extends PamirsDepartment {

    public static final String MODEL_MODEL = "top.DepartmentDoc";

    @Field.many2one
    @Field.Relation(relationFields = {"parentCode"}, referenceFields = {"code"})
    @Field(displayName = "上级部门")
    private DepartmentDoc parent;

    @Field.one2many
    @Field.Relation(relationFields = {"code"}, referenceFields = {"departmentCode"})
    @Field(displayName = "岗位列表")
    private List<PositionDoc> positionLists;
}

岗位代理模型

@Model.model(PositionDoc.MODEL_MODEL)
@Model(displayName = "岗位代理模型", summary = "岗位代理模型")
@Model.Advanced(type = ModelTypeEnum.PROXY)
public class PositionDoc extends PamirsPosition {

    public static final String MODEL_MODEL = "top.PositionDoc";

    @Field.many2one
    @Field.Relation(relationFields = {"departmentCode"}, referenceFields = {"code"})
    @Field(displayName = "上级岗位")
    private PositionDoc parent;
}

Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/wen-ti-zhen-duan/14856.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
yexiu的头像yexiu数式员工
上一篇 2024年7月23日 pm2:57
下一篇 2024年7月23日 pm5:41

相关推荐

  • 前端打包后运行报错: locale is undefined

    前端 monorepo 工程打包的时候可能会遇到如下报错: 解决方案分为四步: 下载这个build脚本,并放到 scripts 目录下,需要解压下载地址 修改 boot 工程的 package.json, 为 scripts 属性添加这两行命令 "prebuild": "node ../../scripts/build/prebuild-only.js", "postbuild": "node ../../scripts/build/postbuild.js", 在根目录执行 pnpm run clean,删除依赖,如果是windows电脑,执行 pnpm run clean:win 重新安装依赖pnpm install,再回到 boot 工程,执行 pnpm run build

    2025年7月18日
    13300
  • 新增模块不存在

    后端代码新增了一个模块,但在前端看不到新增的模块,主要排查以下几个方面 检查启动参数中是否添加-Plifecycle=INSTALL。 启动工程的yml文件中在pamirs: boot: modules: 中是否添加了该模块 启动工程的pom文件是否依赖该该模块所在包 检查启动工程是否扫描到了该模块所在包

    2024年7月23日
    83000
  • 同步导出时路由新页面问题

    情景复现:界面设计器配置了同步导出,在页面上点击导出之后跳转到首页而没有正常下载文件排查路径: 点击导出之后,查看跳转的页面路径发现,跳转到了127.****/Hfyk/pamirs/page,可知,跳转路径不对,怀疑是Nginx路由配置问题,排查Nginx配置 发现没有配置下载路由,在Nginx中配置下载路由

    2024年7月24日
    81600
  • 函数如何跳过权限拦截

    跳过登录直接调用接口 示例: 跳过queryTea的权限验证 @Action(displayName = "queryTea", bindingType = ViewTypeEnum.FORM) @Action.Advanced(type = FunctionTypeEnum.UPDATE) public Teacher queryTea(Teacher data) { } 在yaml文件里面配置上该函数的namespace(模型编码)以及函数名字 pamirs: auth: fun-filter: – namespace: user.PamirsUserTransient fun: login #登录 – namespace: top.Teacher fun: queryTea 不跳过登录直接调用接口 示例: 在yaml文件里面配置上该函数的namespace(模型编码)以及函数名字 pamirs: auth: fun-filter-only-login: #登录后不再校验该函数的权限 – namespace: top.Teacher fun: queryTea 按包设置权限过滤 如何批量跳过权限验证?以上两种方式提供了在yml文件里面配置权限过滤的方式,但如果需要大量过滤权限,配置就变得很繁琐,所以下面主要介绍通过代码扩展的方式去控制权限。 示例: 以下示例通过控制包路径来跳过权限。 继承pro.shushi.pamirs.auth.api.spi.AuthFilterService接口 import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Order(88) @Component public class CustomAuthFilterService implements AuthFilterService { public static final String skipClass = "pro.shushi.pamirs.top.core.action"; @Override public Boolean isAccessAction(String model, String name) { //从缓存中取函数 Action cacheAction = PamirsSession.getContext().getExtendCache(ActionCacheApi.class).get(model, name); if (cacheAction instanceof ServerAction) { ServerAction serverAction = (ServerAction) cacheAction; Function function = PamirsSession.getContext().getFunction(serverAction.getModel(), serverAction.getFun()); String clazz = function.getClazz(); //返回true就代表通过验证 if (clazz != null && clazz.startsWith(skipClass)) { return true; } } return null; } } 请求pro.shushi.pamirs.top.core.action路径下的动作可以通过验证。

    2024年8月22日
    90800
  • 跳转动作无权限问题排查

    版本: 5.0.X以上 现象 配置了一个跳转动作,并配置了加载函数。点击跳转到另一个页面,发现弹出“无权限进行该操作”错误。 原因 权限那边配置动作权限也都给了权限,但是为什么会出现这种情况呢?大概率是因为没有配置加载函数的权限,导致报错。 排查路径 5.0.X 以上版本权限控制是通过请求载荷里面的variables参数携带的path路径进行鉴权的。这个path路径是通过菜单名字一层一层拼接的。这个报错的根本原因就是因为这个无权限的请求的path路径下,没有这个加载函数的权限。所以要解决问题很简单,只需要在这个路径下配置上这个加载函数的权限就可以了。 ① 跳转页面是弹窗打开或抽屉打开:这种情况新打开的页面的path路径是不会变的,所使用的还是外面表格页面的路径,所以只需要把该加载函数配置到外面表格页面并隐藏掉,然后在权限那边配置上该动作权限问题就解决了。 ② 跳转页面是新窗口打开,这个时候新打开的页面的path路径是会变成新窗口所在的路径,所以只需要把该加载函数配置到跳转页面上,并隐藏掉,然后在权限那边配置上该动作权限问题也可以解决。 ③ 如果这个加载函数不需要有页面交互,或者页面和函数不属于同一个模型,则可以直接把这个函数改为Function绕过权限验证就好。

    2024年10月29日
    2.3K00

Leave a Reply

登录后才能评论