苍穹表单插件如何操作分录
# 苍穹表单插件如何操作分录
## 表单插件给分录设置值
### 先上代码
```
/**
* 关联查询展示分录
*/
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...
点击下载文档
本文2024-09-16 17:47:02发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-17913.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章