代码修改元数据(批量关闭快捷新增)原创
2人赞赏了该文章
178次浏览
未经作者许可,禁止转载编辑于2024年10月18日 12:28:47
需求
关闭基础资料快捷新增
思路
基础资料快捷新增 QuickAddNew 默认 true
快捷新增属性是页面元数据,在 FieldAp.createEditor() 源码中判断如下:
if (!this.isQuickAddNew() || this.field instanceof BillTypeField) { editor.put("qan", false); }
因为默认为 true,所以页面元数据 xml 中需要 <QuickAddNew>false</QuickAddNew> 才会关闭快捷新增
实现步骤
修改设计元数据
String id = "页面标识"; String entityId = MetadataDao.getIdByNumber(id, MetaCategory.Entity); //读取实体元数据,需要注意是 readMeta 方法,不是读取运行时元数据 EntityMetadata entityMetadata = (EntityMetadata) MetadataDao.readMeta(entityId, MetaCategory.Entity); List<EntityItem<?>> items = entityMetadata.getItems(); List<String> basedataFields = new ArrayList<>(); items.forEach(e -> { if ("BasedataField".equals(e.getClass().getSimpleName())) { basedataFields.add(e.getKey()); } }); String formId = MetadataDao.getIdByNumber(id, MetaCategory.Form); //读取页面元数据,需要注意是 readMeta 方法,不是读取运行时元数据 FormMetadata formMetadata = (FormMetadata) MetadataDao.readMeta(formId, MetaCategory.Form); List<ControlAp<?>> controlAps = formMetadata.getItems(); controlAps.forEach(e -> { if (e instanceof FieldAp) { if (basedataFields.contains(e.getKey())) { //关闭快捷新增 ((FieldAp) e).setQuickAddNew(false); } } }); //保存页面元数据 MetadataWriter metadataWriter = new MetadataWriter(formMetadata.getModelType()); Map<String, Object> result = metadataWriter.save(formMetadata); if (result != null) { }
重建元数据
苍穹访问地址 + /metadata/rebuild.do?formId=表单标识
重建全部:苍穹访问地址 + /metadata/rebuildAll.do?force=true
参考资料
查看运行时元数据: https://vip.kingdee.com/link/s/ln2JO
元数据
如何查看快捷新增属性对应 QuickAddNew ,鼠标指针在标题停留
如何查看元素属性 QuickAddNew:bos-metadata-*.jar/FormItemProperty.xml <Style Id="QuickAddNewProperty"> 如下:
<Style Id="QuickAddNewProperty"> <PropertyName>QuickAddNew</PropertyName> <Name>快捷新增</Name> <Description>基础资料/单据模糊查询无记录时显示快捷新增按钮</Description> <Editor>{"type":"checkbox","default":true}</Editor> <Hide>{"types": ["FieldAp", "EntryFieldAp","FlatFieldAp","CardEntryFieldAp"], "fieldTypes":["BasedataField","AssistantField","MaterielField","CurrencyField","UnitField","UserField","OrgField","MulBasedataField","AccountField","ItemClassField","GroupField","ParentBasedataField","RefBillField","MulHisModelBasedataField","HisModelBasedataField"], "hide":false}</Hide> <GroupId>3</GroupId> <GroupSubSeq>541</GroupSubSeq> </Style>
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读