afterBuildQueryParemeter事件

1 事件介绍
插件可以在此事件中,增加需要加载的源单字段,调整源单行取数条件。
2 事件触发时机
系统根据转换规则上的字段映射关系,确认好了需要加载的源单字段之后,触发此事件,并传入需转换的源单行过滤条件( FID in [1,2,3,4] )。
3 代码模板
package kd.bos.plugin.sample.bill.billconvert.template;
import kd.bos.entity.botp.plugin.AbstractConvertPlugIn;
import kd.bos.entity.botp.plugin.args.AfterBuildQueryParemeterEventArgs;
public class AfterBuildQueryParemeter extends AbstractConvertPlugIn {
@Override
public void afterBuildQueryParemeter(AfterBuildQueryParemeterEventArgs e) {
// TODO 在此添加业务逻辑
}
}4 参数说明
public class AfterBuildQueryParemeterEventArgs extends ConvertPluginEventArgs
public Map<String, String> getSrcFldAlias():预计会加载的源单字段及其别名;
public void addSrcField(String fullPropName) :
1. 添加插件需要用到的源单字段;
2. 传入字段标识,如textfield;
3. 如果要取源单基础资料字段的引用属性,要传入基础资料字段标识及其引用属性,如basedatafield.name;
4. 不需要在前面带单据体标识;
public List<QFilter> getQFilters():系统根据传入的源单内码,生成的源单取数条件,插件可以调整此集合中的条件对象。
5 应用示例
5.1 案例说明
1. 源单有单据编号、业务日期、金额字段;
2. 需要把这三个字段值,拼成一个字符串,填写到目标单内容字段上;
3. 业务日期格式化为yyyy-MM-dd,金额带币别。
5.2 实现方案
1. 捕获 afterBuildQueryParemeter 事件,要求加载源单单据编号、业务日期、金额、币别字段;
2. 捕获 afterFieldMapping 事件,取源单字段值,格式化后填写在目标单上。
5.3 实例代码
package kd.bos.plugin.sample.bill.billconvert.bizcase;
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;
public class AfterBuildQueryParemeterSample extends AbstractConvertPlugIn {
private final static String KEY_BILLNO = "billno";
private final static String KEY_DATE = "date";
private final static String KEY_AMOUNT = "amount";
private final static String KEY_CURRENCYNAME = "currency.name";
private final static String KEY_CONTENT = "content";
/**
* 在开始读取源单数据前,触发此事件
* @remark
* 在此事件中,要求加载插件要用到的源单字段
*/
@Override
public void afterBuildQueryParemeter(AfterBuildQueryParemeterEventArgs e) {
e.addSrcField(KEY_BILLNO); // 单据编号
e.addSrcField(KEY_DATE); // 业务日期
e.addSrcField(KEY_AMOUNT); // 金额
e.addSrcField(KEY_CURRENCYNAME); // 币别.名称 currency.name
}
/**
* 目标单字段值,携带完毕后,触发此事件
* @remark
* 在此事件中,自行取源单字段值,格式化后填写到目标单
*/
@SuppressWarnings("unchecked")
@Override
public void afterFieldMapping(AfterFieldMappingEventArgs e) {
// 取目标单,单afterBuildQueryParemeter事件
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



