金蝶云苍穹单据转换插件AfterBuildQueryParemeterSample事件案例
原创约 773 字大约 3 分钟...
87-金蝶云苍穹单据转换插件AfterBuildQueryParemeterSample事件案例.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
前置条件
要有目标单与源单,例笔者有做一个采购申请单与采购订单
为目标单添加字段
在采购订单的单据头中添加一个文本字段,并按下图所示更改名称与标识

编码
package kd.bos.billzh.plugin;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
import kd.bos.entity.botp.plugin.args.AfterBuildQueryParemeterEventArgs;
import kd.bos.entity.botp.plugin.args.AfterFieldMappingEventArgs;
import kd.bos.entity.botp.runtime.ConvertConst;
/**
* <p>Title: </p>
* <p>
* Description:
* 试验成功
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author xx
* @date 2020年3月16日
* see_to_overridden
* @version 1.0
*/
public class AfterBuildQueryParemeterSample extends AbstractConvertPlugIn {
private final static String KEY_BILLNO = "billno";
private final static String KEY_DATE = "applydate";
private final static String KEY_AMOUNT = "amount";
private final static String KEY_CURRENCYNAME = "currency.name";
private final static String KEY_CONTENT = "content";
/**
* <p>Title: </p>
* <p>
* Description:
* 在开始读取源单数据前,触发此事件
* @remark
* 在此事件中,要求加载插件要用到的源单字段
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author xx
* @date 2020年3月16日
* @param param the bare_field_name
* @param e
* @see kd.bos.entity.botp.plugin.IConvertPlugIn#afterBuildQueryParemeter(kd.bos.entity.botp.plugin.args.AfterBuildQueryParemeterEventArgs)
* @version 1.0
*/
@Override
public void afterBuildQueryParemeter(AfterBuildQueryParemeterEventArgs e) {
e.addSrcField(KEY_BILLNO); // 单据编号
e.addSrcField(KEY_DATE); // 业务日期
e.addSrcField(KEY_AMOUNT); // 金额
e.addSrcField(KEY_CURRENCYNAME); // 币别.名称 currency.name
}
/**
* <p>Title: </p>
* <p>
* Description:
* 目标单字段值,携带完毕后,触发此事件
* @remark
* 在此事件中,自行取源单字段值,格式化后填写到目标单
* </p>
* <p>Copyright: Copyright (c) 2020</p>
* @author xx
* @date 2020年3月16日
* @param param the bare_field_name
* @param e
* @see kd.bos.entity.botp.plugin.IConvertPlugIn#afterFieldMapping(kd.bos.entity.botp.plugin.args.AfterFieldMappingEventArgs)
* @version 1.0
*/
@SuppressWarnings("unchecked")
@Override
public void afterFieldMapping(AfterFieldMappingEventArgs e) {
// 取目标单,单据头数据包 (可能会生成多张单,是个数组)
String targetEntityNumber = this.getTgtMainType().getName();
ExtendedDataEntity[] billDataEntitys = e.getTargetExtDataEntitySet().FindByEntityKey(targetEntityNumber);
SimpleDateFormat timesdf = new SimpleDateFormat("yyyy-MM-dd");
// 逐单处理
for(ExtendedDataEntity billDataEntity : billDataEntitys){
// 取当前目标单,对应的源单行
List<DynamicObject> srcRows = (List<DynamicObject>)billDataEntity.getValue(ConvertConst.ConvExtDataKey_SourceRows);
// 取源单第一行上的字段值,忽略其他行
DynamicObject srcRow = srcRows.get(0);
// 开始格式化字段值
StringBuilder sBuilder = new StringBuilder();
sBuilder.append(this.getSrcMainType().getDisplayName().toString());
// 单据编号字段值
String billno = (String)e.getFldProperties().get(KEY_BILLNO).getValue(srcRow);
sBuilder.append(billno).append("; ");
// 日期
Object date = e.getFldProperties().get(KEY_DATE).getValue(srcRow);
if (date != null){
sBuilder.append("日期: ").append(timesdf.format((Date)date)).append("; ");
}
// 金额
BigDecimal amount = (BigDecimal)e.getFldProperties().get(KEY_AMOUNT).getValue(srcRow);
sBuilder.append("金额: ").append(amount.toString());
// 币别
String currency = (String)e.getFldProperties().get(KEY_CURRENCYNAME).getValue(srcRow);
sBuilder.append(currency);
System.out.println("sBuilder.toString(): " + sBuilder.toString());
// 给目标单字段赋值
billDataEntity.setValue(KEY_CONTENT, sBuilder.toString());
}
}
}
测试
注册插件:流程服务云 --> 业务流程 --> 转换路线


测试

如上图所示,可以看到目标单的单据头的内容区已被赋值为代码所需的值,则表示测试成功
分割线
相关信息
以上就是我关于 87-金蝶云苍穹单据转换插件AfterBuildQueryParemeterSample事件案例 知识点整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4