【苍穹开发】查询某个业务对象引用的所有基础资料字段信息原创
1人赞赏了该文章
1,040次浏览
编辑于2021年12月13日 09:53:14
通过插件获取某个表单上所有基础资料类型的字段及其实体标识
场景:
查询某个业务对象引用的所有基础资料字段信息
【扩展】
可以将基础资料类型修改不同字段类型,比如长整型
代码示例如下:
package kdps.demo; import kd.bos.dataentity.metadata.IDataEntityProperty; import kd.bos.entity.EntityMetadataCache; import kd.bos.entity.MainEntityType; import kd.bos.entity.property.BasedataProp; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.QueryServiceHelper; import java.util.*; public class MetaServiceHelper { /** * 获取某个业务对象所有应用的基础资料字段,包含基础资料引用的基础资料 * * @param relBaseDataFieldMap * @param formId */ public static void getRelBaseDataKeyByObj(Map<String, String> relBaseDataFieldMap, String formId) { Map<String, BasedataProp> relBaseDataMap = getRelBaseDataByObj(formId); //字段标识,引用基础资料标识 if (relBaseDataFieldMap == null) { relBaseDataFieldMap = new HashMap<>(); } for (Map.Entry<String, BasedataProp> relBdEntry : relBaseDataMap.entrySet()) { String bdFieldKey = relBdEntry.getKey(); BasedataProp bdProp = relBdEntry.getValue(); if (relBaseDataFieldMap.containsKey(bdFieldKey)) { continue; } String refEntityKey = bdProp.getBaseEntityId(); relBaseDataFieldMap.put(bdFieldKey, refEntityKey); getRelBaseDataKeyByObj(relBaseDataFieldMap, refEntityKey); } } /** * 获取业务对象的所有基础资料字段 * * @param formId * @return */ public static Map<String, BasedataProp> getRelBaseDataByObj(String formId) { Map<String, BasedataProp> baseDataFieldMap = new HashMap<>(); Map<String, IDataEntityProperty> allFieldProp = getAllFieldProp(formId); if (allFieldProp == null) { return baseDataFieldMap; } for (Map.Entry<String, IDataEntityProperty> fieldPropEntry : allFieldProp.entrySet()) { IDataEntityProperty fieldProp = fieldPropEntry.getValue(); String fieldKey = fieldPropEntry.getKey(); if (fieldProp instanceof BasedataProp && !baseDataFieldMap.containsKey(fieldKey)) { BasedataProp bdProp = (BasedataProp) fieldProp; baseDataFieldMap.put(fieldKey, bdProp); } } return baseDataFieldMap; } /** * 根据业务对象获取所有字段属性 * * @param formId * @return */ public static Map<String, IDataEntityProperty> getAllFieldProp(String formId) { if (formId == null || formId.isEmpty()) { return null; } QFilter filter = new QFilter("number", QCP.equals, formId); boolean isExist = QueryServiceHelper.exists("bos_formmeta", new QFilter[]{filter}); if (!isExist) { return null; } MainEntityType dataEntityType = EntityMetadataCache.getDataEntityType(formId); if (dataEntityType == null) { return null; } return dataEntityType.getAllFields(); } }
如有建议或不足,请联系指正。
赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读