/// <summary> /// 执行HTTP会话取消单据 /// </summary> /// <param name="pResp">返回HTTP Response XML实体</param> /// <param name="pMsg">返回错误描述</param> /// <param name="args">输入参数,应为主单据Id和单据类型</param> /// <returns>返回存储了HTTP response body的HttpRespXmlBase实例</returns> public override int DoTransaction(out HttpRespXmlBase pResp, out string pMsg, params object[] args) { var ret = new ThirdResult <List <object> >("同步取消单据HTTP会话,开始"); // temp variables pMsg = string.Empty; pResp = null; int errCode = TError.RunGood.Int(); string moid = string.Empty; // 待取消的主单据Id TCWmsOrderCategory mcoc = TCWmsOrderCategory.EUnknownCategory; //TDict709_Value mapClassId = TDict709_Value.EUnknown; // handle arguments if (TError.RunGood.Int() != (errCode = ParseArguments(out moid, out mcoc, args))) { pMsg = "params object[] args,非法入参"; ret.Append(pMsg); ret.End(); return(errCode); } // Do HTTP transaction errCode = DoTransaction(Dict709Handle.Dict709FromMoc(mcoc), moid, out pResp, out pMsg); ret.Append("同步取消单据HTTP会话,结束"); ret.End(); return(errCode); }
virtual protected int UpdateA709(string pEid, string pEsId, TDict285_Values pUpdateOk, TDict285_Values pDel, out string pMsg) { switch (OrderType) { case TCWmsOrderType.EEntryOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EEntryOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); case TCWmsOrderType.EStockoutOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EExwarehouseOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); case TCWmsOrderType.EReturnOrder: return(Dict709Handle.UpdateRowA(TDict709_Value.EReturnOrder, pEid, pEsId, pUpdateOk, pDel, out pMsg)); default: { pMsg = string.Format("{0}.Update709(), unknown order type={1}", GetType(), OrderType); C_WMS.Data.Utility.MyLog.Instance.Warning(pMsg); return(TError.Post_NoChange.Int()); } } }
/// <summary> /// 执行HTTP会话。 /// </summary> /// <param name="args">重载方法应传入至少2个参数。且第一个输入参数为string类型的商城系统中的主出库单ID</param> /// <returns>返回存储了HTTP response body的HttpRespXmlBase实例</returns> public HttpRespXmlBase DoTransaction(params object[] args) { var ret = new ThirdResult <List <object> >("CWmsStockoutCreate.DoTransaction()开始"); HttpReqXmlBase reqBody = null; // new HttpReqXml_InventoryMonitoring();请求 HttpRespXmlBase respBody = null; //响应 int addTo709Rows = 0; //添加到709中的数据 string errMsg = string.Empty; //错误信息 #region 从入参中获取单据ID try { mCachedOrderId = args[0] as string; }//传递值转换成string 失败就抛出异常 catch (Exception ex) { ret.Append(string.Format("发生异常:{0}", ex.Message)); ret.End(); return(null); } #endregion try { var cwmsOrder = CWmsStockoutOrderHandler.NewOrder(mCachedOrderId); cwmsOrder.Handler.UpdateDict709(cwmsOrder, TDict285_Values.EDeleted, TDict285_Values.ENormal, true); // update Dit[709] if (0 >= Dict709Handle.UpdateRow_StockoutCreate(mCachedOrderId, TDict285_Values.EDeleted, TDict285_Values.ENormal, out addTo709Rows, out errMsg)) { ret.Append(string.Format("CWmsStockoutCreate.DoTransaction()结束,向Dict[709]插入创建出库订单行失败:{0}, {1}", addTo709Rows, errMsg)); ret.End(); return(null); }//提交709数据 // generate Http request body if (null == (reqBody = CWmsDataFactory.GetReqXmlBody_ExWarehouseCreate(mCachedOrderId))) { ret.Append(string.Format("CWmsStockoutCreate.DoTransaction(),创建请求体对象失败")); ret.End(); return(null); } respBody = Post(reqBody); // Do Http transaction ret.Append(string.Format("ResponseXML={0}", respBody.ToString())); // 处理response body if (null == respBody) { // update Dict[709] Dict709Handle.UpdateRow_StockoutCreate(mCachedOrderId, TDict285_Values.ENormal, TDict285_Values.ENormal, out addTo709Rows, out errMsg); ret.Append(string.Format("CWmsStockoutCreate.DoTransaction()结束")); // TODO: 返回失败 ret.Append(string.Format("失败,ResponseXML对象为null")); ret.End(); return(null); } else if (!respBody.IsSuccess()) { // TODO: 返回失败 ret.Append(string.Format("失败,ResponseXML对象flag=failure")); ret.End(); return(respBody); } else { Dict709Handle.UpdateRow_StockoutCreate(mCachedOrderId, TDict285_Values.ENormal, TDict285_Values.ENormal, out addTo709Rows, out errMsg); ret.Append(string.Format("CWmsStockoutCreate.DoTransaction()结束")); ret.End(); return(respBody); } } catch (Exception ex) { if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(null); } }
/// <summary> /// 执行接口的HTTP Transaction,该方法可以传入参数,返回HTTP Response Body、错误码和错误描述。需要在子类中实现 /// </summary> /// <param name="pResp">返回HTTP Response Body</param> /// <param name="pMsg">错误描述,若返回成功则返回String.Empty</param> /// <param name="args">传入参数</param> /// <returns>返回错误码TError</returns> public override int DoTransaction(out HttpRespXmlBase pResp, out string pMsg, params object[] args) { try { #region temp variables pMsg = string.Empty; pResp = null; int errCode = TError.RunGood.Int(); int errDict709 = TError.WCF_RunError.Int(); string errMsg = string.Empty; string ddMsg = string.Empty; List <MisModel.Product_WMS_Interface> d709fList = null; string eid = string.Empty; // 主入库订单ID string pid = string.Empty; // 主采购单Id HttpReqXml_EntryOrderCreate reqBody = null; //请求xml #endregion #region handle arguments if (TError.RunGood.Int() != (errCode = ParseArguments(out eid, out pid, args))) { errMsg = "params object[] args,非法入参"; C_WMS.Data.Utility.MyLog.Instance.Error("执行同步入库订单的HTTP会话失败 errCode={0}, msg={1}", errMsg, errMsg); return(errCode); } #endregion #region Update Dict[709] var order = CWmsEntryOrderHandler.NewOrder(eid); order.Handler.UpdateDict709(order, TDict285_Values.EDeleted, TDict285_Values.EUnknown, true); #if false if (TError.WCF_RunError.Int() == (errCode = Dict709Handle.UpdateRowVA_Order(TDict709_Value.EEntryOrder, eid, TDict285_Values.EDeleted, TDict285_Values.ENormal, out d709fList, out errCode, out pMsg))) { C_WMS.Data.Utility.MyLog.Instance.Error("执行同步入库订单的HTTP会话,更新709失败: 入库单Id={0}, errCode={1}, errDict709={2}, errMsg={3}", eid, errCode, errDict709, errMsg); return(errCode); } #endif #endregion reqBody = CWmsDataFactory.GetReqXmlBody_EntryOrderCreate(eid, pid) as HttpReqXml_EntryOrderCreate; // get HTTP request body pResp = Post(reqBody); // Do http transaction #region handle response if (null == pResp) { pMsg = "HTTP会话异常,HTTP响应体为null"; errCode = TError.WCF_RunError.Int(); C_WMS.Data.Utility.MyLog.Instance.Error("执行同步入库订单的HTTP会话,服务器响应异常, message={0}", pMsg); } else if (!pResp.IsSuccess()) { pMsg = pResp.message; errCode = TError.Ser_ErrorPost.Int(); C_WMS.Data.Utility.MyLog.Instance.Error("执行同步入库订单的HTTP会话,服务器响应失败,message={0}", pMsg); } else { errCode = Dict709Handle.UpdateRowVA_Order(TDict709_Value.EEntryOrder, eid, TDict285_Values.ENormal , TDict285_Values.ENormal, out d709fList, out errCode, out pMsg); C_WMS.Data.Utility.MyLog.Instance.Info("执行同步入库订单的HTTP会话完成,更新[709]:errCode={0}, errCode={1}, pMsg={2}", errCode, errCode, pMsg); } #endregion #region 推送钉钉通知 ddMsg = (0 < errCode) ? ddMsg = string.Format(DingDingMsgFmtSuccess, eid) : ddMsg = string.Format(DingDingMsgFmtFailed, eid); mDlgtNotifySyncResult.BeginInvoke(CommonFrame.LoginUser.UserId.Int(), ddMsg, Acb_NotifySyncResult, mDlgtNotifySyncResult); #endregion return(errCode); } #region Handle exception catch (Exception ex) { pResp = null; pMsg = ex.Message; C_WMS.Data.Utility.MyLog.Instance.Error(ex, "在{0}中发生异常", System.Reflection.MethodBase.GetCurrentMethod().Name); return(TError.WCF_RunError.Int()); } #endregion }
/// <summary> /// inner method. 执行HTTP会话 /// </summary> /// <param name="pMapClassId">Dict[709].MapClassId</param> /// <param name="moid">待取消的主单据Id</param> /// <param name="pResp">返回HTTP Response XML实体</param> /// <param name="pMsg">返回错误描述</param> /// <returns>返回存储了HTTP response body的HttpRespXmlBase实例</returns> /// <returns></returns> protected int DoTransaction(TDict709_Value pMapClassId, string moid, out HttpRespXmlBase pResp, out string pMsg) { var ret = new ThirdResult <List <object> >(string.Format("同步取消单据HTTP会话,开始, MapClassId={0}, modi{1}", pMapClassId, moid)); try { #region temp variables pMsg = string.Empty; pResp = null; int errCode = TError.Post_ParamError.Int(); // 方法返回值 int errDict709 = TError.WCF_RunError.Int(); string errMsg = string.Empty; List <MisModel.Product_WMS_Interface> d709fList = null; // 操作Dict709失败时的,缓存操作失败的行的列表 HttpReqXmlBase reqBody = null; // HTTP请求XML HttpRespXmlBase respBody = null; // HTTP响应XML #endregion #region validate arguments if (TDict709_Value.ECancelReturnOrder != pMapClassId) { pMsg = string.Format("不支持的单据类型, pMapClassId={0}", pMapClassId); ret.Append(pMsg); ret.End(); return(errCode); } // TODO: other arguments validations #endregion #region Update Dict[709] errCode = Dict709Handle.UpdateRowVA_Order(pMapClassId, moid, TDict285_Values.EDeleted, TDict285_Values.ENormal, out d709fList, out errDict709, out pMsg); if (TError.WCF_RunError.Int() == errCode) { errMsg = string.Format("更新Dict[709]失败:errCode={0}, errDict709={1}, pMsg={2}", errCode, errDict709, pMsg); ret.Append(string.Format("同步取消单据HTTP会话失败, {0}", errMsg)); ret.End(); return(errCode); } #endregion reqBody = CWmsDataFactory.GetReqXmlBody_CancelOrder(Dict709Handle.Dict709ToMoc(pMapClassId), moid) as HttpReqXml_OrderCacnel; // get HTTP request body respBody = Post(reqBody); // Do http transaction #region handle response if (null == pResp) { pMsg = "HTTP会话异常,HTTP响应体为null"; errCode = TError.WCF_RunError.Int(); ret.Append(string.Format("同步取消单据HTTP会话失败,系统异常:errCode={0}, message={1}", errCode, pMsg)); } else if (!pResp.IsSuccess()) { pMsg = pResp.ToString(); errCode = pResp.code.Int(); ret.Append(string.Format("同步取消单据HTTP会话失败,响应失败: errCode={0}, message={1}", errCode, pMsg)); } else { // update Dict[709] errCode = Dict709Handle.UpdateRowVA_Order(pMapClassId, moid, TDict285_Values.EDeleted, TDict285_Values.ENormal, out d709fList, out errDict709, out pMsg); ret.Append(string.Format("同步取消单据HTTP会话成功:{0}, {1}", errCode, pMsg)); } #endregion ret.End(); return(errCode); } catch (Exception ex) { pResp = null; pMsg = ex.Message; if (null != ex.InnerException) { ret.Append(string.Format("InnerException: {0}", ex.InnerException.Message)); } ret.Append(string.Format("发生异常: {0}\r\n调用堆栈:{1}", ex.Message, ex.StackTrace)); ret.End(); return(TError.WCF_RunError.Int()); } }