苍穹表单插件如何操作分录

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

苍穹表单插件如何操作分录

# 苍穹表单插件如何操作分录 ## 表单插件给分录设置值 ### 先上代码 ``` /** * 关联查询展示分录 */ private void justShowEntryEntity() { // 1.获取分录对象 DynamicObjectCollection entryEntity = this.getModel().getEntryEntity(FormConstant.MODE_ENTRY_ENTITY); // 2.构建查询条件,反查出关联的业务对象集合 List<Long> backTaskIds = entryEntity.stream().map(entry -> { return entry.getLong(FollowTaskConstant.ENTRY_BACK_TASK); }).collect(Collectors.toList()); QFilter qf2 = new QFilter(PROPERTY_ID, QCP.in, backTaskIds); DynamicObjectCollection backTasks = QueryServiceHelper.query(DeclarationTaskConstant.MODE_BACK_TASK, "id,acceptorgid.name,acceptorgid.number,reportstatus,creator.username,reporttime", qf2.toArray()); // 3.如果业务对象不为空,再根据关联主键,将查出的值设置到相应的分录对象中 if (!CollectionUtils.isEmpty(backTasks)) { entryEntity.stream().forEach(entry -> { DynamicObject query = backTasks.stream().filter(backTask -> { return entry.getLong(FollowTaskConstant.ENTRY_BACK_TASK) == backTask.getLong(PROPERTY_ID); }).findFirst().get(); if (Objects.nonNull(query)) { entry.set("acceptorgcode", query.get("acceptorgid.number")); entry.set("acceptorgname", query.get("acceptorgid.name")); entry.set("reportstatus", query.get("reportstatus")); entry.set("reportperson", query.get("creator.username")); entry.set("reporttime", query.get("reporttime")); } }); } // 4.更新让分录显示(这步很重要,没有这步,上面操作都是没有效果的) this.getView().updateView(FormConstant.MODE_ENTRY_ENTITY); } ``` ### 效果图 ![image.webp](/download/010074ec2d5ddb874a13869adc070411cac0.webp) ## 表单插件新增分录 ### 上代码 ``` /** * 将选择的范围插入到分录中 */ private void insertEntity(String spreadStr,Boolean isChanged) { if (StringUtils.isNotBlank(spreadStr)) { String[] split = spreadStr.split(FormConstant.SPLIT_CHAR_1); int row = this.getModel().createNewEntryRow(FormConstant.MODE_ENTITY); this.getModel().setValue(SpreadSheetsConstant.R_START, Integer.parseInt(split[0]), row); this.getModel().setValue(SpreadSheetsConstant.R_END, Integer.parseInt(split[1]), row); this.getModel().setValue(SpreadSheetsConstant.C_START, Integer.parseInt(split[2]), row); this.getModel().setValue(SpreadSheetsConstant.C_END, Integer.parseInt(split[3]), row); this.getModel().setDataChanged(isChanged); } } ``` ### 新场景,在没有model,view视图情况中,代码如何创建分录 ``` /** * 插件内代码给新动态对象添加分录数据 * * @param originalOrder 源单 * @param newOrder 新单 */ public static void setOriginBillInfoEntry(DynamicObject originalOrder, DynamicObject newOrder) { // 源单-分录 DynamicObjectCollection originalEntry = originalOrder.getDynamicObjectCollection("entryentity"); // 新单-分录 DynamicObjectCollection newEntry = newOrder.getDynamicObjectCollection("**_entryentity"); int seq = 0; for (DynamicObject oldEntry : originalEntry) { DynamicObject entry = newEntry.addNew(); entry.set("seq",seq); // entryvacationtype 休假类型 entry.set("新单分录字段", oldEntry.get("源单分录字段")); ... // 分录序号+1 seq++; } } ``` ## 说明: 以上是给出操作分录的关键方法,业务不同不能直接套用,也不是可运行的demo,如果看了以上代码还有不清楚的,请私聊我,谢谢! 希望我是来给诸位解惑的,而不是给大家增加困惑。

苍穹表单插件如何操作分录

# 苍穹表单插件如何操作分录## 表单插件给分录设置值### 先上代码```/** * 关联查询展示分录 */ private vo...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息