/// <summary> /// 执行同步客户操作 /// </summary> /// <param name="sourceDatas"></param> /// <param name="logs"></param> /// <param name="operationType"></param> /// <returns></returns> public override HttpResponseResult ExecuteSynchro(IEnumerable <AbsSynchroDataInfo> sourceDatas, List <SynchroLog> logs, SynOperationType operationType) { HttpResponseResult result = null; KDTransactionScope trans = null; List <K3CustomerInfo> custs = ConvertAbsSynchroObject(sourceDatas); JObject bizData = BuildSynchroDataJsons(sourceDatas, operationType); List <string> numbers = null; List <int> pkIds = null; try { if (operationType == SynOperationType.SAVE) { #region try { #region using (trans = new KDTransactionScope(System.Transactions.TransactionScopeOption.Required)) { //单据保存 result = ExecuteOperate(SynOperationType.SAVE, null, null, bizData.ToString()); if (result != null && result.Success == true) { //保存操作成功后返回单据的编码集合 if (result.GetNeedReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)) != null) { numbers = result.GetNeedReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)); } //保存操作成功后返回的单据内码集合 if (result.GetNeedReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList() != null) { pkIds = result.GetNeedReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList(); } } ////单据提交 //result = InvokeWebApi.InvokeBatchSubmit(this.K3CloudContext, this.DataType, FormKey, numbers); ////单据审核 //result = InvokeWebApi.InvokeBatchAudit(this.K3CloudContext, this.DataType, FormKey, numbers); ////单据分配 //result = InvokeWebApi.InvokeBatchAllot(this.K3CloudContext, this.DataType, FormKey, pkIds); ////分配后更新提交审核 //result = AfterAllot(this.K3CloudContext, custs); ////提交事务 trans.Complete(); } } #endregion #region ////单据保存 //result = InvokeWebApi.InvokeBatchSave(this.K3CloudContext, this.DataType, FormKey, bizData.ToString()); //if (result != null && result.Success == true) //{ // //保存操作成功后返回单据的编码集合 // if (result.ReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)) != null) // { // numbers = result.ReturnValues("FNumber").ConvertAll(obj => string.Format("{0}", obj)); // } // //保存操作成功后返回的单据内码集合 // if (result.ReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList() != null) // { // pkIds = result.ReturnValues("FCUSTID").Select(obj => Convert.ToInt32(obj)).ToList(); // } //} ////单据提交 //result = InvokeWebApi.InvokeBatchSumbit(this.K3CloudContext, this.DataType, FormKey, numbers); ////单据审核 //result = InvokeWebApi.InvokeBatchAudit(this.K3CloudContext, this.DataType, FormKey, numbers); ////单据分配 ////result = InvokeWebApi.InvokeBatchAllot(this.K3CloudContext, this.DataType, FormKey, pkIds); ////分配后更新提交审核 ////result = AfterAllot(this.K3CloudContext, custs); //trans.Complete(); #endregion catch (Exception ex) { LogUtils.WriteSynchroLog(this.K3CloudContext, this.DataType, "提交事务出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace); } finally { if (trans != null) { trans.Dispose(); } } #endregion } else if (operationType == SynOperationType.ALLOT) { //单据分配 try { if (custs != null && custs.Count > 0) { AfterAllot(this.K3CloudContext, custs); } } catch (Exception ex) { LogUtils.WriteSynchroLog(this.K3CloudContext, this.DataType, "分配操作出现异常,异常信息:" + ex.Message + System.Environment.NewLine + ex.StackTrace); } } else if (operationType == SynOperationType.UPDATE) { //单据更新 //result = InvokeWebApi.InvokeBatchSave(this.K3CloudContext, this.DataType, FormKey, bizData.ToString()); } return(result); } catch (Exception ex) { if (logs != null && logs.Count > 0) { foreach (var log in logs) { log.IsSuccess = 0; log.ErrInfor = ex.Message + System.Environment.NewLine + ex.StackTrace; } } } if (result == null) { return(null); } if (result.Success == false && result.FailedResult == null && result.Result == null) { //同步出现错误之类:如令牌错误,url错误之类的 if (logs != null && logs.Count > 0) { foreach (var log in logs) { log.IsSuccess = 0; log.ErrInfor = "数据同步失败:" + result.Message == null ? "" : result.Message; } } return(result); } return(result); }