// 库存同步接口(异步) /// <summary> /// 库存同步接口(异步) /// </summary> /// <param name="service"></param> /// <param name="param"></param> /// <returns></returns> public static DMSAsync_PI07.stockDTO[] Do(this DMSAsync_PI07.PI07Client service, DMSAsync_PI07.stockDTO[] param) { service.Endpoint.Address = new System.ServiceModel.EndpointAddress(PubHelper.GetAddress(service.Endpoint.Address.Uri.ToString())); string entityName = "库存同步接口(异步)"; long svID = -1; if (IsLog) { svID = ProxyLogger.CreateTransferSV(entityName //, EntitySerialization.EntitySerial(bpObj) , Newtonsoft.Json.JsonConvert.SerializeObject(param) , service.GetType().FullName, Newtonsoft.Json.JsonConvert.SerializeObject(service.Endpoint.Address)); } //UFIDA.U9.CBO.Pub.Controller.ContextDTO contextDTO = new UFIDA.U9.CBO.Pub.Controller.ContextDTO(); //contextDTO.EntCode = PubClass.GetString(UFIDA.U9.Base.Context.GetAttribute("EnterpriseID")); //contextDTO.OrgCode = Context.LoginOrg.Code; //contextDTO.UserCode = Context.LoginUser; //U9Context context = new U9Context(); //string enCode = PubClass.GetString(UFIDA.U9.Base.Context.GetAttribute("EnterpriseID")); //context.EnterpriseCode = enCode; //context.EnterpriseID = enCode; //context.OrgCode = Context.LoginOrg.Code; //context.OrgID = Context.LoginOrg.ID.ToString(); //context.CultureName = Context.LoginLanguageCode; //context.UserID = Context.LoginUserID; //context.UserCode = Context.LoginUser; //context.Url = "http://localhost/U9/HBHServices/U9.VOB.HBHCommon.IU9CommonSV.svc"; U9Context context = GetHBHU9Context(); try { //var result = service.receive(param); //service.receiveCompleted += new EventHandler<DMSAsync_PI07.receiveCompletedEventArgs>(service_receiveCompleted); //service.receiveAsync(param, svID); service.Beginreceive(param , delegate(IAsyncResult asyncResult) { if (asyncResult != null ) { //long svID = (long)asyncResult.AsyncState; svID = (long)asyncResult.AsyncState; if (svID > 0) { EntityResult logResult = new EntityResult(); DMSAsync_PI07.stockDTO[] result = null; try { result = service.Endreceive(asyncResult); //contextDTO.WriteToContext(); } catch (Exception ex) { //ProxyLogger.UpdateTransferSV(svID, string.Empty, false, ex.Message, "异步获取返回值异常!", ex.StackTrace); logResult.Sucessfull = false; logResult.Message = ex.Message; logResult.Trace = ex.StackTrace; logResult.StringValue = "异步获取返回值异常!"; UpdateU9LogProxy(context, logResult, svID); } if (result != null && result.Length > 0 ) { //string resultXml = EntitySerialization.EntitySerial(result); string resultXml = Newtonsoft.Json.JsonConvert.SerializeObject(result); bool flag = result[0] != null ? result[0].flag == 1 : false; string msg = result[0] != null ? result[0].errMsg : string.Empty; //try //{ // ProxyLogger.UpdateTransferSV(svID, resultXml, flag, msg, string.Empty, string.Empty); //} //catch (Exception ex) //{ // throw ex; //} logResult.Sucessfull = flag; logResult.Message = msg; logResult.StringValue = resultXml; logResult.Trace = string.Empty; UpdateU9LogProxy(context, logResult,svID); } else { //ProxyLogger.UpdateTransferSV(svID, string.Empty, false, Const_ResultNullMessage, string.Empty, string.Empty); logResult.Sucessfull = false; logResult.Message = Const_ResultNullMessage; logResult.Trace = string.Empty; logResult.StringValue = "异步返回值为空!"; UpdateU9LogProxy(context, logResult,svID); } } //return result; } } , svID); } catch (Exception ex) { if (svID > 0) { ProxyLogger.UpdateTransferSV(svID, string.Empty, false, ex.Message, string.Empty, ex.StackTrace); } throw ex; } return null; }
static void service_receiveCompleted(object sender, DMSAsync_PI07.receiveCompletedEventArgs e) { if (e != null ) { long svID = (long)e.UserState; if (svID > 0) { DMSAsync_PI07.stockDTO[] result = e.Result; if (result != null && result.Length > 0 ) { //string resultXml = EntitySerialization.EntitySerial(result); string resultXml = Newtonsoft.Json.JsonConvert.SerializeObject(result); bool flag = result[0] != null ? result[0].flag == 1 : false; string msg = result[0] != null ? result[0].errMsg : string.Empty; ProxyLogger.UpdateTransferSV(svID, resultXml, flag, msg, string.Empty, string.Empty); } else { ProxyLogger.UpdateTransferSV(svID, string.Empty, false, Const_ResultNullMessage, string.Empty, string.Empty); } } //return result; } }