【苍穹开发】根据应用及分组编码查询业务对象集合原创
3人赞赏了该文章
833次浏览
编辑于2021年12月10日 16:11:12
苍穹开发中, 如果想从插件中获取应用信息及其表单,可以结合应用元数据帮助类查询。
具体场景:
根据应用编码和应用分组编码获取其下所有业务对象编码
代码示例如下:
package kdps.demo; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.devportal.AppFunctionPacketElement; import kd.bos.metadata.devportal.AppMetadata; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; import kd.bos.servicehelper.devportal.AppMetaServiceHelper; import java.util.*; import java.util.stream.Collectors; public class MetaServiceHelper { /** * 根据应用编码获取应用元数据 * * @param appNumber * @return */ public static AppMetadata getAppMetadata(String appNumber) { QFilter qFilter = new QFilter("number", QCP.equals, appNumber); DynamicObject appObj = QueryServiceHelper.queryOne("bos_devportal_bizapp", "id", new QFilter[]{qFilter}); String id = appObj.getString("id"); AppMetadata metadata = AppMetaServiceHelper.loadAppMetadataById(id); return metadata; } /** * 根据应用编码和分组编码获取应用下的功能分组id * * @param appNumber * @return */ public static String getAppGroupOfEntity(String appNumber, String groupNumber) { AppMetadata appMetadata = getAppMetadata(appNumber); if (appMetadata == null) { return null; } List<AppFunctionPacketElement> appFunctionPackets = appMetadata.getAppFunctionPackets(); Optional<String> groupIdOp = appFunctionPackets.stream().filter(t -> groupNumber.equals(t.getNumber())).map(t -> t.getId()).findFirst(); if (groupIdOp.isPresent()) { return groupIdOp.get(); } return null; } /** * 根据应用编码和功能分组编码获取其下所有业务对象编码 * * @param appNumber * @param groupNumber * @return */ public static Set<String> getEntityByAppGroup(String appNumber, String groupNumber) { String groupId = getAppGroupOfEntity(appNumber, groupNumber); //功能分组-业务对象 QFilter qFilter = new QFilter("bizunit", QCP.equals, groupId); DynamicObjectCollection formIdObjs = QueryServiceHelper.query("bos_devportal_unitrelform", "form", new QFilter[]{qFilter}); List<String> formIdLst = formIdObjs.stream().map(t -> t.getString("form")).collect(Collectors.toList()); if (formIdLst.isEmpty()) { return new HashSet<>(); } //业务对象内码-编码 QFilter filter = new QFilter("id", QCP.in, formIdLst); DynamicObjectCollection formNumberObjs = QueryServiceHelper.query("bos_formmeta", "number", new QFilter[]{filter}); Set<String> entityKeyLst = formNumberObjs.stream().map(t -> t.getString("number")).collect(Collectors.toSet()); return entityKeyLst; } }
如有建议或不足,请联系指正。
赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读