金蝶云苍穹单据转换插件AfterBuildQueryParemeterSample事件案例

涎涎原创约 773 字大约 3 分钟...KingdeeKingdee

87-金蝶云苍穹单据转换插件AfterBuildQueryParemeterSample事件案例.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

前置条件

要有目标单与源单,例笔者有做一个采购申请单与采购订单

为目标单添加字段

在采购订单的单据头中添加一个文本字段,并按下图所示更改名称与标识

编码

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