示例#1
0
        public void ItemsSync(out HttpRespXmlBase pRespXmlObj)
        {
            C_WMS.Data.Utility.MyLog.Instance.Info("[弃用的]批量同步商品(同步操作),开始");
            var trans = new CWmsTransactionItemSync();

            pRespXmlObj = trans.DoTransaction();
        }
示例#2
0
        /// <summary>
        /// 同步单个商品。返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null
        /// </summary>
        /// <param name="pId">商品编码</param>
        /// <param name="pRespXmlObj">返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null</param>
        public void SingleItemSync(int pId, out HttpRespXmlBase pRespXmlObj)
        {
            C_WMS.Data.Utility.MyLog.Instance.Info("同步单个商品{0},开始", pId);
            var trans = new CWmsTransactionItemSync();

            pRespXmlObj = trans.DoTransaction(pId);
            C_WMS.Data.Utility.MyLog.Instance.Info("同步单个商品{0},结束。返回:{1}", pId, pRespXmlObj);
        }
示例#3
0
 /// <summary>
 /// 同步创建商品出库单。返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null
 /// </summary>
 /// <param name="pStockoutId">主出库单ID</param>
 /// <param name="pRespXmlObj">返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null</param>
 public void StockoutOrderCreate(string pStockoutId, out HttpRespXmlBase pRespXmlObj)
 {
     C_WMS.Data.Utility.MyLog.Instance.Info("同步创建商品出库单{0},开始", pStockoutId);
     using (var trans = new CWmsStockoutCreate())
     {
         pRespXmlObj = trans.DoTransaction(pStockoutId);
     }
     C_WMS.Data.Utility.MyLog.Instance.Info("同步创建商品出库单{0},结束。返回: \r\nRESPONSE={1}", pStockoutId, pRespXmlObj);
 }
示例#4
0
        /// <summary>
        /// 同步创建商品退货单。返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null
        /// </summary>
        /// <param name="pReturnOrderId">主退货订单Id</param>
        /// <param name="pRespXmlObj">返回WMS系统响应的XML内容反序列化后的实体, 若执行失败则返回null</param>
        /// <returns></returns>
        public void ReturnOrderCreate(string pReturnOrderId, out HttpRespXmlBase pRespXmlObj)
        {
            C_WMS.Data.Utility.MyLog.Instance.Info("同步创建商品退货单{0},开始", pReturnOrderId);
            string msg = string.Empty;
            HttpRespXml_ReturnOrderCreate tmpResp = null;

            using (var trans = new CWmsReturnOrderCreate())
            {
                trans.DoTransaction(out tmpResp, out msg, pReturnOrderId);
                pRespXmlObj = tmpResp;
            }
            C_WMS.Data.Utility.MyLog.Instance.Info("同步创建商品退货单{0},结束。返回: \r\nRESPONSE={1}\r\nerrMsg={2}", pReturnOrderId, pRespXmlObj, msg);
        }
示例#5
0
 /// <summary>
 /// overrided method. 执行各接口的HTTP Transaction.
 /// 不要使用同步通讯操作,该方法将抛出异常。需调用int Activate()方法启动异步同步操作。
 /// </summary>
 /// <exception cref="NotImplementedException">不要使用同步通讯操作,该方法将抛出异常。需调用int Activate()方法启动异步同步操作。</exception>
 /// <returns></returns>
 public override int DoTransaction(out HttpRespXmlBase pResp, out string pMsg, params object[] args)
 {
     throw new NotImplementedException("不要使用同步通讯操作,该方法将抛出异常。需调用int Activate()方法启动异步同步操作。");
 }
示例#6
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);
            }
        }
示例#7
0
 public override int DoTransaction(out HttpRespXmlBase pResp, out string pMsg, params object[] args)
 {
     throw new NotImplementedException();
 }
示例#8
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
        }