【分享】生成凭证反写接口模版
金蝶云社区-yangyang0283
yangyang0283
2人赞赏了该文章 891次浏览 未经作者许可,禁止转载编辑于2014年06月10日 14:56:27

1.批量接口通过sql更新性能优化

2.避免配置数据过滤后导致原单据的数据丢失

需要原单实体新增(注意是新增,该方法未在基类定义)接口batchReverseSave
/**
*srcBillPKs原单id数组
*srcBillVOs 原单数据集合(数据过滤之后)
*bOTBillOperStateEnum 操作类型 新增时是BOTBillOperStateEnum.ADDNEW 删除是BOTBillOperStateEnum.DELETE
*bOTRelationInfos botp关系集合
*/
protected void _batchReverseSave(Context ctx, IObjectPK[] srcBillPKs, CoreBillBaseCollection srcBillVOs,
BOTBillOperStateEnum bOTBillOperStateEnum, BOTRelationCollection bOTRelationInfos) throws BOSException, EASBizException { if (bOTRelationInfos.size() < 1)
return;
BOTRelationInfo botRelation = bOTRelationInfos.get(0);
//判断是否为生成凭证
if (!(new VoucherInfo().getBOSType().toString().equals(botRelation.getDestEntityID())))
return;
StringBuffer sqlin = new StringBuffer();
for(int i = 0,size = bOTRelationInfos.size(); i < size ;i++){
if(i != 0){
sqlin.append(",");
}
sqlin.append("'").append(bOTRelationInfos.get(i).getSrcObjectID()).append("'");
}

if (BOTBillOperStateEnum.DELETE.equals(bOTBillOperStateEnum)) { //TODO 删除时更新原单据的ffivouchered 为未生成凭证状态 0 sql语句: update 单据表名 set ffivouchered = 0 where fid in sqlin ;
}else {
//TODO 新增时更新原单据的ffivouchered 为已生成凭证状态 1 sql语句: update 单据表名 set ffivouchered = 1 where fid in sqlin ;
}
//异常处理