前言
很多时候我们在操作业务单据时想要在审核后自动生成下游单据。在标准产品中提供了关联生成的功能,但需要手动去操作,那怎么样自动生成下游单据呢
解决方案
代码中调用botp完成单据下推
实现步骤
1- 获取botp规则的FID与BOS_TYPE。ctrl+shift+c复制后去查询分析器获取对应的FID以及BOS_TYPE。代码调用botp需要用到这两个值
示例
在editUi的审核方法中调用botp生成下游单据
//审核
public void actionAudit_actionPerformed(ActionEvent e) throws Exception
{
//省略其他业务代码
try {
//生成下游单据
this.callBotpCreateBill(this.editData);
} catch (Exception e2) {
e2.printStackTrace();
}
loadFields();
}
callBotpCreateBill方法
/**
* 调用botp生成单据处理
*/
private void callBotpCreateBill(CoreBillBaseInfo info) throws BOSException, EASBizException{
//botp规则的fid()
String botpId = this.getBOTP_ID();
//BOTP目标单的BOSTYPE
String destBillBosType = this.getBOS_TYPE();
//源单据转换为Collection
CoreBillBaseCollection srcBills = new CoreBillBaseCollection();
srcBills.add(info);
//调用botp生成下游单据
this.callBotp(botpId, destBillBosType, srcBills);
}
callBotp
/**
* 调用botp生成单据
* @param botpId BOTP规则fid
* @param destBillBosType BOTP目标单BOSTYPE
* @param srcBills 源单据集合
*/
public void callBotp(String botpId,String destBillBosType, CoreBillBaseCollection srcBills)
throws BOSException, EASBizException{
IObjectPK botpPK = new ObjectUuidPK(botpId);
//获取botp管理器
IBTPManager btpManager = BTPManagerFactory.getRemoteInstance();
//进行BOTP转换,返回结果对象
BTPTransformResult result = btpManager.transformForBotp(srcBills, destBillBosType, botpPK);
//获取目标单据集合
IObjectCollection bills = result.getBills();
//获取关联关系对象
BOTRelationCollection relationCollection = result.getBOTRelationCollection();
//建立上下游关系
for(int i = 0;i < bills.size(); i++){
CoreBillBaseInfo destBillInfo = (CoreBillBaseInfo) bills.getObject(i);
btpManager.saveRelations(destBillInfo, relationCollection);
//这里可以自定义对下游单据处理
}
}