销售订单启用事物控制时,出现异常,产生锁
金蝶云社区-CRMv7gg
CRMv7gg
0人赞赏了该文章 974次浏览 未经作者许可,禁止转载编辑于2017年12月11日 11:56:45

背景:通过接口将销售订单一次性通过接口完成所有业务操作(保存,提交,审核),而不调用多次接口

下面代码实现的内容:销售订单进行保存,提交,审核一次完成
问题:当开启事物后,审核存在异常(例如信用额度不够),审核事件就会长时间不响应,产生数据库锁。
但是如果审核没有异常,事物的整体控制正常。
另,不开启事物,逐个的进行保存,提交,审核,也不会锁定事物

//开启事物控制
using (KDTransactionScope trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required))
{
try
{
//保存数据
ISaveService saveService = Kingdee.BOS.App.ServiceHelper.GetService();
IOperationResult ir = saveService.Save(this.KDContext.Session.AppContext, formMetaData.BusinessInfo, new DynamicObject[] { obj });

if (ir.IsSuccess)
{
//提交单据
long billID = (long)dt.Properties["Id"].GetValue(obj);
ISubmitService submitService = ServiceHelper.GetService();
ir = submitService.Submit(this.KDContext.Session.AppContext, info, new object[] { billID }, "Submit");

if (ir.IsSuccess)
{
List> lstKeyValuePairs = new List>();
KeyValuePair keyValuePair = new KeyValuePair(billID, "");
lstKeyValuePairs.Add(keyValuePair);

//审核单据,业务存在异常(信用额度不够,该事件长时间锁定)
ISetStatusService auditService = ServiceHelper.GetService();
ir = auditService.SetBillStatus(this.KDContext.Session.AppContext, info, lstKeyValuePairs, null, "Audit");
}
}