Exemplo n.º 1
0
        /// <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
        }
Exemplo n.º 2
0
        /// <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());
            }
        }