【HR产品】showForm打开单据F7列表,列表不受标品控权问题解决原创
1人赞赏了该文章
376次浏览
编辑于2023年12月13日 14:16:32
问题描述
最近做HR项目遇到个问题,单据A绑定了业务对象维度映射,单据列表正常被控权(dataPermQFilters有值),但通过代码打开的F7列表没被控权(dataPermQFilters没值),代码如下:
ListShowParameter parameter = new ListShowParameter(); parameter.setFormId("bos_listf7"); parameter.setBillFormId("a2h6_test_bill"); parameter.setLookUp(true); this.getView().showForm(parameter);
跟源码跟到kd.hr.hrcs.mservice.HRCSDataPermissionService#getDataRule方法时发现是因为isLookUp为true,就return不走权限了。。。
但是isLookUp必须为true才是隐藏工具栏的可选界面,不然就是单纯的展示列表了...
解决方案
isLookUp设置true,自己调getDataRule方法拿到QFilter传过去
ListShowParameter parameter = new ListShowParameter(); parameter.setFormId("bos_listf7"); parameter.setBillFormId("a2h6_test_bill"); parameter.setLookUp(true); String bizAppId = ShowFormHelper.getBizAppId(this.getView().getFormShowParameter()); QFilter customResult = DispatchServiceHelper.invokeService("kd.hrmp.hrcs.servicehelper", "hrcs", "IHRCSDataPermissionService","getDataRule", new Object[]{RequestContext.get().getCurrUserId(), bizAppId, "a2h6_test_bill", PermissionStatus.View, null}); if (Objects.nonNull(customResult)){ parameter.getListFilterParameter().setFilter(customResult); } this.getView().showForm(parameter);
推荐阅读