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